发现蛮多C++ coder存在一个误会:"string str2 = str1;" 调用赋值构造函数。"string str2(str1);" 调用拷贝构造函数。
但其实C++有拷贝构造函数(有人叫复制构造函数),有赋值运算符重载,但没有赋值构造函数!
"string str2 = str1;" 和 "string str2(str1);"效果完全一样,都是调用拷贝构造函数。
"string str3; str3 = str1;",第一句调用构造函数,第二句调用赋值运算符。
ps:个人觉得蛮bt的,也是C++语法细节特别多的一个佐证。