gpt4 book ai didi

c++ - 类赋值运算符

转载 作者:太空狗 更新时间:2023-10-29 23:29:04 25 4
gpt4 key购买 nike

我做了以下运算符重载测试:

#include <iostream>
#include <string>

using namespace std;

class TestClass
{
string ClassName;

public:

TestClass(string Name)
{
ClassName = Name;
cout << ClassName << " constructed." << endl;
}

~TestClass()
{
cout << ClassName << " destructed." << endl;
}

void operator=(TestClass Other)
{
cout << ClassName << " in operator=" << endl;
cout << "The address of the other class is " << &Other << "." << endl;
}
};

int main()
{
TestClass FirstInstance("FirstInstance");
TestClass SecondInstance("SecondInstance");

FirstInstance = SecondInstance;
SecondInstance = FirstInstance;

return 0;
}

赋值运算符按预期运行,输出另一个实例的地址。

现在,我实际上如何分配来自另一个实例的东西?例如,像这样:

void operator=(TestClass Other)
{
ClassName = Other.ClassName;
}

最佳答案

您展示的代码可以做到这一点。不过,没有人会认为这是一个特别好的实现。

这符合赋值运算符的预期:

TestClass& operator=(TestClass other)
{
using std::swap;
swap(ClassName, other.ClassName);
// repeat for other member variables;
return *this;
}

顺便说一句,你谈论“其他类”,但你只有一个类,以及该类的多个实例。

关于c++ - 类赋值运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4509730/

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