如果拷貝構造函數是由private
然後在複製構造函數不被調用用於複製初始化或優化?
案例1:沒有錯誤,編譯器不一樣,如果拷貝構造函數是在類中定義的照顧。
案例2:錯誤,複製構造函數是私有的,當它被製作爲public
時,它被省略。
它是否直接優化副本而不會注意到如果構造函數是private
?
#include <string>
using std::string;
class T
{
string s;
T(const T &obj):s(obj.s){}
public:
T(const string &str):s(str){}
};
int main()
{
T a = ("Copy Initialization"); //Case: 1
T b = T("Copy Initialization"); //Case: 2
}
在`Case:1`中,實際上並沒有創建一個`T`類型的臨時對象。你怎麼能給它分配``````T`型`? – Mahesh 2011-01-09 14:17:21