Описание тега return-by-value
2
ответа
Почему возвращаемое значение должно быть const для не встроенных типов, а не const для встроенных типов?
Решения 4 и 5 на GotW #6 Const-Correctness упоминают это: Point GetPoint( const int i ) { return points_[i]; } Возврат по значению обычно должен быть константным для не встроенных типов возврата. int GetNumPoints() { return points_.size(); } .. поск…
18 мар '12 в 21:46
5
ответов
C++ Возвращаемое значение, ссылка, константная ссылка
Можете ли вы объяснить мне разницу между возвращаемым значением, ссылкой на значение и константной ссылкой на значение? Значение: Vector2D operator += (const Vector2D& vector) { this->x += vector.x; this->y += vector.y; return *this; } Нек…
14 фев '14 в 11:23
1
ответ
Вернуть объект из функции по значению и использовать его в присваивании / копировании c'tor C++
Предположим, что функция возвращает объект класса A по значению. A f(); Предположим, у нас есть позднее назначение / копирование c'tor: a = f(); //a is of type A - assignment A aa = f(); // copy c'tor d'or возвращенного объекта вызывается после прис…
05 фев '15 в 20:56
4
ответа
C - Матрицы как передать по значению?
Я разрабатываю функции обработки матрицы для C-проекта. Я рассматриваю либо передачу матриц по значению или по ссылке. Я создал бенчмарк, передающий матрицы по значению и по ссылке, и оба, кажется, выполняют то же самое с флагами оптимизации -O0 и -…
29 мар '13 в 00:27
5
ответов
C++ глубокое копирование с объектами
Доброе утро. У меня возникают проблемы с пониманием логики глубокого и поверхностного копирования с объектами на C++ в общем проекте, поэтому я создал следующий пример. int main() { ObjectAType* objecta = ObjectAType::New(); ObjectBType* objectb = O…
16 янв '13 в 17:59
2
ответа
Fortran 2008: Как возвращаются возвращаемые значения функции?
Возможно ли в современном Фортране вернуть массив из функции с производительностью, эквивалентной подпрограмме, заполняющей массив, переданный в качестве аргумента? Рассмотрим, например, как простой пример PROGRAM PRETURN INTEGER :: C(5) C = FUNC() …
21 июн '16 в 14:22
2
ответа
Перегрузка оператора ссылкой или значением C++
Я видел много уроков и пытался найти ответ на stackru, но безуспешно. В чем я не уверен, так это Есть ли какая-то практика, когда возвращать по значению или по ссылке, при перегрузке оператора? Например, Class &operator+(){ Class obj; //... retu…
28 апр '16 в 07:43
3
ответа
Оптимальный способ вернуть локальное значение в C++11
В старые времена, если бы я хотел строковое представление объекта AЯ бы написал что-нибудь с подписью void to_string(const A& a, string& out) чтобы избежать лишних копий. Является ли это все еще лучшей практикой в C++11 с семантикой переме…
26 авг '13 в 15:12
2
ответа
Вернуть ссылку на *this без конструктора копирования?
Я написал класс, подобный следующему: class ScriptThread { public: ScriptThread(): mParent() {} private: ScriptThread(ScriptThread *parent): mParent(parent) {} public: ScriptThread(ScriptThread &&rhs); ScriptThread &operator = (ScriptThr…
21 июл '15 в 18:07
3
ответа
C++ Создание экземпляров потомков абстрактного класса с чисто виртуальными функциями
У меня есть абстрактный класс, пусть это будет, например, Animal. У животного есть чисто виртуальная функция еды, которую каждое животное должно выполнять, если оно не хочет голодать. Я гарантирую, что таким образом может быть создан только ребенок …
09 ноя '16 в 18:47
1
ответ
Скопировать конструктор странное поведение при возврате по значению
Я проверил поведение конструктора копирования с помощью функций, возвращающих объект по значению, и натолкнулся на случай, когда конструктор копирования вызывается, а случай - нет. Пожалуйста, рассмотрите следующий код: class A { public: A() {} A(co…
30 июн '12 в 21:17
1
ответ
Почему неименованный объект, возвращаемый по значению, разрушается до вызова его оператора преобразования?
У меня есть функция, которая возвращает объект по значению. Переменная получателя требует вызова оператора внешнего преобразования для этого объекта. Если я создаю возвращенный объект в операторе возврата (RVO), его деструктор вызывается перед опера…
19 май '15 в 15:34
2
ответа
Безопасно ли возвращать std::string по значению?
В следующем коде строка инкапсулирована в классе Foo. Вызов Foo::getText() возвращает строку по значению. Это создает второй экземпляр строкового объекта, но оба строковых объекта теперь указывают на один и тот же символьный буфер в куче. Когда экзе…
23 июн '16 в 21:04
0
ответов
Почему конструктор копирования вызывается дважды при возврате, но один раз при передаче по значению в функцию
Недавно я запутался в очень простом вопросе, когда я читал о копировании. Рассмотрим следующий код: class Test { public: Test() { cout<< "default c'tor"<<endl; } Test(const& Test) { cout<< "copy c'tor"<<endl; } }; Test Fu…
15 ноя '18 в 07:38
1
ответ
Как правильно обрабатывать возврат по значению объектов с указателями?
Предположим, у меня есть класс Foo которая "имеет" единственную переменную-член, которая является указателем на некоторый другой объект Bla: struct Foo { Bla *bla; Foo() { this->bla = new Bla(); } ~Foo() { delete this->bla; } }; Как мне обрабо…
19 сен '16 в 02:14
2
ответа
Ссылка на элемент вектора, возвращаемый функцией в C++
Может ли кто-то проверить, что следующее является ошибкой, и объяснить, почему? Я думаю, что знаю, но неясно о деталях. (Моя настоящая проблема связана с вектором перечислений, а не целых чисел, но я не думаю, что это должно иметь значение.) Предпол…
14 мар '13 в 13:39
4
ответа
Возвращение векторов стандартно в C++
Теперь я знаю, что это общий вопрос, но я не смог найти прямого ответа на этот вопрос. Это действительно вопрос о стандартах. Я работаю над проектом с использованием генетического алгоритма. Но я сталкиваюсь с узким местом, когда дело доходит до воз…
17 апр '14 в 21:48
3
ответа
В C++11 все еще существует необходимость передавать ссылку на объект, который будет принимать выходные данные функции?
До C++11, если бы у меня была функция, которая работала с большими объектами, мой инстинкт был бы писать функции с таким прототипом. void f(A &return_value, A const &parameter_value); (Здесь return_value - это просто пустой объект, который б…
16 июн '12 в 04:54
1
ответ
Обертка ctypes для функции, возвращаемой объектами-значениями класса C++ с деструктором
Можно ctypes обернуть функции, которые возвращают объекты (не указатели / ссылки) класса C++ с деструктором? Пример ниже segfaults при вызове lib.init_point_by_value: foo.cpp: #include <iostream> extern "C" { using namespace std; struct Point …
25 июн '18 в 15:53
2
ответа
Означает ли возврат по значению дополнительные копии и дополнительные издержки? C++
Учтите следующее: class Foo { ... }; Foo rbv(); void caller() { Foo x = rbv(); ← the return-value of rbv() goes into x ... } Foo rbv() { ... return Foo(42, 73); ← suppose Foo has a ctor Foo::Foo(int a, int b) } Сколько объектов типа Foo будет постро…
21 апр '14 в 11:00