【发布时间】:2011-01-09 14:07:06
【问题描述】:
如果复制构造函数是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类型的临时对象。你怎么能分配它a,它的类型是T?
标签: c++ visual-c++-2010