Почему компилятор выводит меня из строя?

(с использованием Visual C ++ 2010, компиляция при отладке с отключенной оптимизацией )

У меня есть следующий очень простой класс:

class exampleClass
{
public:
    exampleClass()
    {
        cout << "in the default ctor" << endl;
    }
private:
    exampleClass (const exampleClass& e)
    {
        cout << "in the copy ctor" << endl;
    }
};

Когда я пытаюсь скомпилировать его с помощью следующего main:

#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, почему это меня беспокоит?

Поскольку некоторые люди пропустили первую строку (по крайней мере, перед некоторыми изменениями), я повторю ее:

Я скомпилировал отладку с отключенной оптимизацией.

17
задан infokiller 2 November 2011 в 15:28
поделиться