Добрый день!
Имеется следующий код:
#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.
Подскажите пожалуйста, что здесь не так?