Описание тега return-by-reference

1 ответ

Функция C++ возвращает действительный объект "по ссылке" после уничтожения

Я использую компилятор Visual Studio 2010, и я пытаюсь понять вывод этой программы. Код: #include <iostream> using namespace std; class A { public: int i; A() { i=0; cout<<"constructing A..\n"; } A(int a): i(a) { cout<<"constructin…
7 ответов

Схема прохождения по ссылке

Как я могу передать переменную по ссылке в схеме? Пример функциональности, которую я хочу: (define foo (lambda (&x) (set! x 5))) (define y 2) (foo y) (display y) ;outputs: 5 Кроме того, есть ли способ вернуться по ссылке?
1 ответ

Странное использование unique_ptr

Я вижу некоторый код, который использует unique_ptr в некоторых странных отношениях, я не уверен, что это даже законно, хотя кажется, что он хорошо компилируется на g++ с -std=c++0x #include <memory> #include <boost/unordered_map.hpp> ty…
18 янв '13 в 06:32
5 ответов

C++ Возвращаемое значение, ссылка, константная ссылка

Можете ли вы объяснить мне разницу между возвращаемым значением, ссылкой на значение и константной ссылкой на значение? Значение: Vector2D operator += (const Vector2D& vector) { this->x += vector.x; this->y += vector.y; return *this; } Нек…
3 ответа

C++, возвращающий ссылку на объект

Я в настоящее время на курсе C++ и я борюсь с ссылками. Я знаю, что есть некоторые похожие темы, но я не смог найти ответ на этот вопрос. Дело в том, что мой Проф хочет, чтобы мы использовали ссылки при возврате объектов, поэтому возврат по значению…
20 сен '15 в 23:11
3 ответа

Как я могу создать список динамических объектов в C++

У меня есть эта простая программа на C++ #include <iostream> #include <string> #include <list> using namespace std; class test { private: string _name; list<test*> _list; public: test(const string& S): _name(S) { this-&gt…
25 янв '17 в 19:12
3 ответа

Почему мы можем возвращать ссылки на переменные-члены класса

Я хочу понять, почему можно вернуть ссылку на переменную члена класса в C++, например, в следующем примере: class Foo { int x; public: int& get_pvar() { return x; }}; По-видимому, мы можем получить доступ к переменной x в main(), создать ссылку …
1 ответ

Медленный возврат статического вектора по ссылке

Я настраивал кеш для рисования фигур. Мой подход был следующим: Я создал класс OrbitCacheManager.h, который выглядел так: #ifndef OrbitCacheManager_h #define OrbitCacheManager_h #include <vector> #include "cache_0_0.h" #include "cache_1_0.h" /…
04 дек '18 в 15:16
9 ответов

C++: возвращение по ссылке и копирование конструкторов

Ссылки на C++ сбивают меня с толку.:) Основная идея заключается в том, что я пытаюсь вернуть объект из функции. Я хотел бы сделать это без возврата указателя (потому что тогда мне придется вручную delete это), и без вызова конструктора копирования, …
2 ответа

Fortran 2008: Как возвращаются возвращаемые значения функции?

Возможно ли в современном Фортране вернуть массив из функции с производительностью, эквивалентной подпрограмме, заполняющей массив, переданный в качестве аргумента? Рассмотрим, например, как простой пример PROGRAM PRETURN INTEGER :: C(5) C = FUNC() …
2 ответа

Перегрузка оператора ссылкой или значением C++

Я видел много уроков и пытался найти ответ на stackru, но безуспешно. В чем я не уверен, так это Есть ли какая-то практика, когда возвращать по значению или по ссылке, при перегрузке оператора? Например, Class &operator+(){ Class obj; //... retu…
1 ответ

Вернуть указатель на локальную переменную?? (предупреждение C4172)

Ну, визуальная студия дает мне предупреждение. Я понимаю предупреждение и знаю, что это не ошибка. Однако я не понимаю, ПОЧЕМУ я вижу предупреждение - и, что еще хуже, я не понимаю, как предотвратить / какие потенциальные проблемы оно может дать. Ко…
17 апр '13 в 13:33
3 ответа

Оптимальный способ вернуть локальное значение в C++11

В старые времена, если бы я хотел строковое представление объекта AЯ бы написал что-нибудь с подписью void to_string(const A& a, string& out) чтобы избежать лишних копий. Является ли это все еще лучшей практикой в ​​C++11 с семантикой переме…
2 ответа

Вернуть ссылку на *this без конструктора копирования?

Я написал класс, подобный следующему: class ScriptThread { public: ScriptThread(): mParent() {} private: ScriptThread(ScriptThread *parent): mParent(parent) {} public: ScriptThread(ScriptThread &&rhs); ScriptThread &operator = (ScriptThr…
0 ответов

C++: ссылки и переносимость

Я пишу плагин хоста. Когда плагин загружен, он получает указатель на таблицу функций. Иногда я хочу создать свободный интерфейс, например так: typedef struct{} *ht_MenuNode; struct iMenuNode { struct iEditor { typedef iEditor *t_loopback; t_loopback…
9 ответов

Что означает int& foo() в C++?

Когда я читал это объяснение о lvalues ​​и rvalues, мне показались следующие строки кода: int& foo(); foo() = 42; // OK, foo() is an lvalue Я пробовал это в g++, но компилятор говорит "неопределенная ссылка на foo()". Если я добавлю int foo() { …
07 апр '16 в 13:23
6 ответов

Перегруженный оператор [] в шаблонном классе в C++ с версиями const / nonconst

Фью, это был длинный титул. Вот моя проблема. У меня есть шаблонный класс в C++, и я перегружаю оператор []. У меня есть как константная, так и неконстантная версия, причем неконстантная версия возвращается по ссылке, так что элементы в классе могут…
11 авг '10 в 13:37
2 ответа

C++ возврат по ссылке, каковы эффекты?

Возьмите следующий код, где функция возвращается по ссылке: #include <cstdio> using namespace std; int & myFunction(int & input) { return input; } int main() { int x; int y = 10; x = myFunction(y); printf("x is %d\n",x); // x is 10 pri…
2 ответа

Избегать копирования по значению при инициализации ссылки

У меня есть интерфейс функции: struct iFace { virtual Type& getType() = 0; } и идея состоит в том, чтобы получить это как: iFace& iface = getIface(); Type& type = iface.getType(); однако иногда я делаю ошибку и пишу: Type type = iface.ge…
1 ответ

Почему возврат по ссылке быстрее, чем возврат по значению?

class A { int x,y; public: A(int a=0,int b=0) {x=a;y=b;} /* ... */ } A&amp; fctr() { A loc(1,2); return loc; } Давайте рассмотрим эту инструкцию: A x=fctr(); fctr() возвращая ссылку на уничтоженный объект... << это не проблема -_- В приведенной выше…
12 авг '13 в 17:23