byt*_*uff 5 c++ class copy-constructor assignment-operator
同样,默认的复制构造函数是否在所有成员上调用复制构造函数?例如,如果一个类有非POD成员,如下所示:
class A
{
std::string str;
};
Run Code Online (Sandbox Code Playgroud)
...默认的编译器生成的复制构造函数和赋值运算符是否正常工作?他们会调用字符串的复制构造函数吗?operator=或者它们是否只是成为成员变量的按位副本str?
换句话说,拥有一个std::string成员意味着这个类需要一个用户实现的复制构造函数和赋值运算符吗?
是的,编译器生成的将正常工作.
但是,如果您实现自己的并将它们留空,则不会.
如果您没有管理内存并且所有成员都提供正确的复制/分配/销毁,则您不需要(也不应该)实现自己的复制构造函数/析构函数/赋值运算符.
换句话说,有一个std :: string成员是否意味着这个类需要一个用户实现的复制构造函数和赋值运算符?
不,编译器生成的将完美地工作.