Форум программистов, компьютерный форум CyberForum.ru

конструктор копии - C++

Восстановить пароль Регистрация
 
tokar2
25 / 25 / 1
Регистрация: 09.11.2012
Сообщений: 229
30.12.2012, 16:18     конструктор копии #1
Мне кажется что здесь также должен вызывать конструктор копия при возврате объекта obj из функции Get()! Разве нет?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream.h>
#include <time.h>
 
class myClass{
      
public:
       myClass(){cout<<"Norm inicialized"<<endl;}
       myClass(const myClass &obj){cout<<"Kopia inicialized"<<endl;}
       };
myClass Get()
{
    myClass obj;
    return obj;
 }
int main()
{
    {
          
   myClass ObjA;
   ObjA=Get();
   
   
}
   system("pause");
   return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.12.2012, 16:26     конструктор копии #2
должен, но все зависит от опций компиляции, в частности опций оптимизации
http://en.wikipedia.org/wiki/Return_value_optimization
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
30.12.2012, 16:27     конструктор копии #3
Цитата Сообщение от Jupiter Посмотреть сообщение
должен,
Почему конструктор копии? Тут же оператор присваивания вызывается.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.12.2012, 16:30     конструктор копии #4
Schizorb, функция Get() возвращает копию локального объкта obj
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
30.12.2012, 16:32     конструктор копии #5
Цитата Сообщение от Jupiter Посмотреть сообщение
функция Get() возвращает копию локального объкта obj
А, ну то есть сначала конструктор копии, а потом присваивание? Оно же там всяко есть...
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
30.12.2012, 16:33     конструктор копии #6
Цитата Сообщение от Schizorb Посмотреть сообщение
А, ну то есть сначала конструктор копии, а потом присваивани
именно так
tokar2
25 / 25 / 1
Регистрация: 09.11.2012
Сообщений: 229
30.12.2012, 16:39  [ТС]     конструктор копии #7
Ну так почему конструктор копия не вызывается?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.12.2012, 17:20     конструктор копии
Еще ссылки по теме:

this(Всегда ли вызывается конструктор при не явной передачи объекта в конструктор) C++
C++ Конструктор копии
Почему не вызывается конструктор копии? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
30.12.2012, 17:20     конструктор копии #8
Цитата Сообщение от tokar2 Посмотреть сообщение
Ну так почему конструктор копия не вызывается?
Вам же ответили, компилятор может не создавать в этом случае временный объект.

Для gcc удалось отключить эту оптимизацию с помощью:
-fno-elide-constructors
Yandex
Объявления
30.12.2012, 17:20     конструктор копии
Ответ Создать тему
Опции темы

Текущее время: 06:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru