Copy-конструктор - подскажите, что не так?
От: Аноним  
Дата: 25.05.07 08:56
Оценка:
Добрый день!

Имеется следующий код:

#include <iostream>

using namespace std;

class MyClass
{
        int value;
    public:
        MyClass(): value(1) {}
        MyClass(const MyClass& cl): value(2) {}
        void print() { cout << value << endl; }
};

MyClass func()
{
    MyClass myVar;

    return myVar;
}

int main(void)
{
    MyClass mainVar = func();
    mainVar.print();
    return 0;
}


Я ожидал, что данная прога выведет результат — 2, т.е. сработает 2-ой конструктор. Но под Линуксом (gcc 3.2) она выдает 1. Компилируя сей код с помощью VS2005 тоже получается 1. Но если в VS отключить оптимизации, то результат — 2.

Подскажите пожалуйста, что здесь не так?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.