【发布时间】:2020-05-28 10:46:49
【问题描述】:
class A
{
int value_;
public:
A(int value):value_(value){}
};
A get_a1(int value)
{
return A(value);
}
A get_a2(int value)
{
return {value};
}
int main()
{
A a1 = get_a1(1);
A a2 = get_a2(2);
}
get_a1() 和get_a2() 有什么区别?
return {value}; 怎么称呼? (我猜“通过花括号调用构造函数”不是引用 this 的正确方法)
【问题讨论】:
-
我猜已经够接近了。这是一个“支撑初始化列表”,根据en.cppreference.com/w/cpp/language/initialization,我不精通标准语言,所以我会把完整的答案留给那些想要深入了解细节的人。
-
我想到的两个区别是,如果你有
long value,它可能会在get_a2中警告你,或者如果A有一个std::initializer_list构造函数get_a1和get_a2会使用不同的构造函数。 -
fwiw,
return value;也可以
标签: c++ constructor scope return