#include<iostream>
using namespace std;
class A
{
public:
A():m(10)
{
cout<<"constuctor A is called!"<<endl;
}
int m;
};
A fun(A a)
{
cout<<"fun &a="<<&a<<endl;
return a;
}
int main()
{
A a;
a=fun(a);
cout<<"main &a="<<&a<<endl;
}
运行结果:
constuctor A is called!
fun &a=0012FF28;
main &a=0012FF7C
疑问1:
上述程序似乎为什么产生了两个对象,却只调用了一次构造函数?
疑问2:
上述程序应该产生了三个对象,1、执行语句 A a
2、用a对象初始化fun中的形参;
3、返回 fun 中局部对象 a时 应该会产生 一个临时对象
对于上述疑问,恳请高手解答,感激不尽!
...全文
1284打赏收藏
求助关于C++构造函数的疑问
#include using namespace std; class A { public: A():m(10) { cout<<"constuctor A is called!"<<endl; } int m; }; A fun(A a) { cout<<"fun &a="<<&a<<endl; return a; } int main() { A a; a=fun(a); cout<<"main &a="<<&a<<endl; } 运行结果: constuctor A
class A
{
public:
A():m(10)
{
cout<<"constuctor A is called!"<<endl;
}
A(const A&){cout<< "A(const A&)" <<endl;}
A& operator =(const A&) {cout<< "operator =(const A&)" <<endl;return *this;}
int m;
};