求以下程序输出。
=============================================
class Base
{
public:
Base(int i)
{
data = i;
cout<<"Construct Base "<<i<<endl;
}
Base(const Base& base)
{
cout<<"Copy Construct"<<endl;
data = base.data;
}
Base& operator =(int i)
{
data = i;
cout<<"Operator ="<<i<<endl;
return *this;
}
~Base()
{
cout<<"Deconstruct"<<data<<endl;
}
private:
int data;
};
Base Play(Base param)
{
return param;
}
int main()
{
Base a = 1;//等同于Base a(1);
Base b = Play(2);//等同于Base b(Base(2)),主要是这一步,省略临时变量创建,容易错。
//Play(2); //如果注释掉上边一句,改为这一句,输出结果一样,因为此时创建了临时变量。
return 0;
}
==============================
运行截图:
分析:
为什么又是创建临时变量,又是不创建,感觉是编译器优化吧。。。仅仅是感觉。。。。。。