类中的赋值操作和构造容易使人混淆,加以区分,引以为戒:
我用string类为例:
string str1 = "hello world"; string str2 = str1;
有“=”不一定就是赋值操作,其实,上边的string str2 = str1,就不是赋值操作,它等效下边的语句:
string str1 ("hello world"); //调用的是构造函数 string str2 (str1); //调用的是拷贝构造函数你看到的赋值,其实是调用了拷贝构造函数 回来,再例如:
string str2; str2 = str1;这才是赋值操作,等效于:
string str2(“”); str2.operator=(str1);即就是:
string str2; //调用参数默认为空串的构造函数:string str2(“”); str2 = str1; //调用str2的赋值操作:str2.operator=(str1);定要分清。
赐教!