Re[10]: Почему нельзя писать void ctor();
От: Erop Россия  
Дата: 26.04.17 19:55
Оценка:
Здравствуйте, CRT, Вы писали:

CRT>Поэтому это не очевидно — то есть непонятно на первый взгляд — в таком синтаксисе, что

CRT>
CRT>A obj=A(1024);
CRT>

CRT>равно
CRT>
CRT>A obj(1024);
CRT>


А они и не равны...

Попробуй скомпилировать...
class A {
    A(const A&);
public:
    int Data;
    A(int i = 0) : Data(i) {}
};

A obj = A(1024);

По С++ компилятор в такой штуке имеет право выбрасывать конструктор копии, так же, как и при RVO/NRVO, но не имеет права не проверять его доступность...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.