我正在实现一项新功能。
我有一个带有 bool 变量的简单类。 我没有在其中实现 operator= 函数。 不过,当我使用 operator = 复制对象时,正在复制值。
您能解释一下它是如何工作的吗? 不编写此函数有多安全,因为在我的应用程序中,很多时候,我将使用运算符 '=' 复制这些对象
#include <iostream>
using namespace std;
class A
{
public:
bool abc;
bool xyz;
};
int main()
{
A obj1, obj2;
obj1.abc = true;
obj1.xyz = false;
obj2 = obj1;
cout<<"obj2 abc: "<<obj2.abc<<endl; //How do the values got copied?
cout<<"obj2 xyz: "<<obj2.xyz<<endl;
}
最佳答案
如果您的类(class)不管理资源,那是安全的。默认的 operator =
执行成员复制。这是一个浅拷贝,因此所有具有可用的可访问 operator =
的成员都将被正确复制。
如果类正在管理资源(动态内存、流、句柄等),默认值是不安全的 - 参见 the rule of three .
关于c++ - 如果 operator= 函数未在 C++ 类中实现,执行将如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14398953/