C++ конструторы
ЕслиИсточник информации?
SomeClass obj(...)
есть просто короткая запись
SomeClass obj = SomeClass(...)
Бьерн Страуструп, Язык программирования С++, Специальное издание. Издательство Бином, 2006-й год, с. 273, первый абзац.
Ну и плюс простенькие эксперименты, например так:
Выводится:
test's constructor 5
test's constructor 10
test's copy constructor
Ну и плюс простенькие эксперименты, например так:
#include <iostream>
using namespace std;
class test
{
public:
test(int i)
{
cout<<"test's constructor " << i << endl;
}
test (const test&)
{
cout << "test's copy constructor" << endl;
}
};
int main
{
test t1(5);
test t2 = test(10);
test t3 = t2;
return 0;
}
Выводится:
test's constructor 5
test's constructor 10
test's copy constructor
В стандарте написано лишь, что компилятор конструкцию вида SomeClass obj = SomeClass(...) имеет право заменить на конструкцию SomeClass obj(...
но это не означает, что эти конструкции эквивалентны
но это не означает, что эти конструкции эквивалентны
Ты хочешь сказать, что SomeClass obj = Someclass(...) может быть реализовано, как создание безымянного объекта, вызов копирующего конструктора для obj и затем удаление безымянного объекта?
да
Все, понял, был неправ 
Нашел место, где это подробно описывается.

Нашел место, где это подробно описывается.
Оставить комментарий
erotic
ЕслиSomeClass obj(...)
есть просто короткая запись
SomeClass obj = SomeClass(...
где под троеточием подразумеваются какие-то параметры конструктора, то почему, когда я прячу в приватную зону класса копирующий конструктор, второй вариант не компилируется с ошибкой cannot access private member declared in class SomeClass ?