使用大括号进行结构初始化

时间:2018-09-13 01:18:50

标签: c++

在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())是否有效?与使用{}的方式有何不同?

1 个答案:

答案 0 :(得分:1)

这是副本初始化。它调用隐式声明的copy-constructor。来源:https://en.cppreference.com/w/cpp/language/copy_initializationhttps://en.cppreference.com/w/cpp/language/copy_constructor