在C ++项目中看到了类似下面的代码:
struct Foo{
std::wstring x;
//blah
}
// this func returns a Foo object
Foo getFoo(){
//blah
}
void main() {
Foo obj{getFoo()}; //why can initialize by another Foo object in {}?
}
{}
是列表初始化。但是这里没有列出Foo
自变量。为什么这样做? struct是否具有默认的复制构造函数?
Foo obj(getFoo())
是否有效?与使用{}
的方式有何不同?
答案 0 :(得分:1)
这是副本初始化。它调用隐式声明的copy-constructor。来源:https://en.cppreference.com/w/cpp/language/copy_initialization,https://en.cppreference.com/w/cpp/language/copy_constructor