#include <iostream.h>
class TEST
{
public:
TEST()
{
cout<<"默认构造函数"<<endl;
}
TEST(const TEST&t)
{
cout<<"拷贝构造函数"<<endl;
}
TEST &operator =(const TEST&t)
{
cout<<"赋值操作符"<<endl;
return *this;
}
};
void fun(TEST t){}
void main()
{
cout<<"构造t1 ";
TEST t1;
cout<<"构造t2 ";
TEST t2=t1;
cout<<"构造t3 ";
TEST t3(t1);
cout<<"赋值 ";
t3=t1;
cout<<"函数参数的构造方式 ";
fun(t1);
}
尤其需要注意的是,即使是‘=’号,也未必是赋值操作符,就像TEST t2=t1;调用的是拷贝构造函数,因为此时是构造t2的阶段,所以只能是调用构造函数。
但是如果已经定义了t2,然后t2=t1;则调用赋值操作符。
还有,以“传值”的方式当作参数时,也调用拷贝构造。