#include <stdio.h>
class aaa
{
}; //新建的一个普通类
class test
{
public:
int a;
aaa* aa;
test() //普通构造函数
{
printf("普通构造函数test().\n");
}
test(aaa* a){ //普通构造函数
this->aa = a;
printf("普通构造函数test(aaa* a).\n");
}
test(test& t) //复制构造函数
{
this->aa = t.aa;
printf("复制构造函数test(test& t).\n");
}
test& operator = (aaa* a) //等号重载
{
this->aa = a;
printf("等号重载test& operator = (aaa* a)\n");
return *this;
}
test& operator = (test& t) //等号重载
{
this->aa = t.aa;
printf("等号重载test& operator = (test& t)\n");
return *this;
}
};
int main(int argc, char** argv)
{
aaa* a = new aaa(); //new一个aaa类对象
test t = a; //将对象指针赋给另一个类test对象,调用的是普通构造函数test(aaa* a)
test t1 = t; // 屏蔽了复制构造函数也不会报错?同对象赋值,调用复制构造函数
t1 = t; //调用等号重载test& operator = (test& t) //等号重载
test t2;
t2 = a; //调用等号重载test& operator = (aaa* a)
return 0;
}
/*
输出结果如下:
普通构造函数test(aaa* a).
复制构造函数test(test& t).
等号重载test& operator = (test& t)
普通构造函数test().
等号重载test& operator = (aaa* a)
*/