(с использованием Visual С++ 2010, компиляция при отладке с отключенными оптимизациями)
У меня есть следующий очень простой класс:
class exampleClass
{
public:
exampleClass()
{
cout << "in the default ctor" << endl;
}
private:
exampleClass (const exampleClass& e)
{
cout << "in the copy ctor" << endl;
}
};
Когда я пытаюсь скомпилировать его со следующим основным:
#include <iostream>
using namespace std;
int main()
{
exampleClass e1=exampleClass();
return 0;
}
Я получаю ошибку компиляции:
'exampleClass::exampleClass' : cannot access private
member declared in class 'exampleClass'
Когда я удаляю модификатор доступа "private" из копии ctor, программа компилирует и печатает только:
in the default ctor
Почему это происходит? Если компилятор не будет ссылаться на копию ctor в любом случае, почему это меня прослушивает?
Так как некоторые люди пропустили первую строку (по крайней мере, до некоторых изменений), я повторю ее: