gpt4 book ai didi

c++ - 默认赋值运算符是否对所有成员调用 operator=?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:30:42 24 4
gpt4 key购买 nike

同样,默认的复制构造函数是否在所有成员上调用复制构造函数?例如,如果一个类有一个非 POD 成员,如下所示:

class A
{
std::string str;
};

...默认编译器生成的复制构造函数和赋值运算符能否正常工作?他们会调用字符串的复制构造函数和 operator= 还是只是按位复制成员变量 str

换句话说,有一个 std::string 成员是否意味着这个类需要一个用户实现的复制构造函数和赋值运算符?

最佳答案

是的,编译器生成的会正常工作。

但是,如果您自己实现并将它们留空,则不会。

如果您不管理内存并且您的所有成员都提供正确的复制/赋值/析构,则您不需要(也不应该)实现自己的复制构造函数/析构函数/赋值运算符。

In other words, does having a std::string member mean this class needs a user-implemented copy constructor and assignment operator?

不,编译器生成的将完美运行。

关于c++ - 默认赋值运算符是否对所有成员调用 operator=?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12617397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com