gpt4 book ai didi

C++11 构造函数和 operator= 的统一初始化

转载 作者:行者123 更新时间:2023-11-30 01:48:22 25 4
gpt4 key购买 nike

我有 T 类和使用 T 作为构造参数的表。

struct T {
string name;
long value;
};

class Table {

public:
T a, b, c;

Table(T a, T b, T c) {
cout << "From constructor: " << a.name << endl;
this->a = a; this->b = b; this->c = c;
}
Table& operator=(const Table& a) {
cout << "In op=: " << a.a.name << endl;
return *this;
}
};

我还有一个示例函数试图调用构造函数和 = 运算符。

int main(int argc, char *argv[]) {   
Table phone_numbers {
{ "Donald Duck", 2015551234 },
{ "Mike Doonesbury", 9794566089 },
{ "Kell Dewclaw", 1123581321 }
};
Table phone_numbers2 = {
{ "Donald Dog", 2015551234 },
{ "Mike Doonesbury", 9794566089 },
{ "Kell Dewclaw", 1123581321 }
};

}

然而,它们都只调用构造函数。

From constructor: Donald Duck
From constructor: Donald Dog

可能出了什么问题?在这种情况下如何调用 = 运算符?

最佳答案

operator= 用于赋值,而不是初始化。要激发这一点,您必须分配给一个已经存在的对象。

Table t = {blah, blah};   // initialisation
t = {wibble, wobble}; // assignment

关于C++11 构造函数和 operator= 的统一初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30518780/

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