急~~c++的构造函数

来源:百度知道 编辑:UC知道 时间:2024/07/05 22:41:13
#include <iostream.h>
class point
{
int x;
public:
point(int x)
{

cout<<"调用构造函数\n";
}
point(point &p)
{

cout<<"调用拷贝构造函数\n";
}

};
void main()
{
point a1=50;
point a2=a1;
a2=a1;
}
执行a2=a1为什么什么也不输出??而把a2=10;他就输出调用构造函数??

第一个point a2=a1;有输出,因为这里调用了拷贝构造函数,

第二个a2=a1;不输出,因为这里调用了“等号运算符”

而把第二个a2=a1改为a2=10,这里面是相当于有一个隐式转换,等价于:
a2=point(10)当然要调用一次“构造函数”和一次"等号运算符"!

没有定义复制构造函数。

point a2=&a1;输出调用拷贝构造函数