使用花括号进行结构初始化 在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 {}? }
使用花括号进行结构初始化 在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 {}? },c++,C++,{}是列表初始化。但是这里没有列出Foo参数。为什么这样做有效?结构是否有默认的复制构造函数 那么Foo obj(getFoo())是否有效?与使用{}的方式有任何区别吗?这是拷贝初始化。它调用隐式声明的复制构造函数。资料来源:,1Foo具有隐式声明的复制构造函数;2. Foo obj(getFoo())也可以工作;3.这里也有同样的效果。
{}
是列表初始化。但是这里没有列出Foo
参数。为什么这样做有效?结构是否有默认的复制构造函数
那么
Foo obj(getFoo())
是否有效?与使用{}
的方式有任何区别吗?这是拷贝初始化。它调用隐式声明的复制构造函数。资料来源:,1Foo
具有隐式声明的复制构造函数;2. <代码>Foo obj(getFoo())也可以工作;3.这里也有同样的效果。