Jos*_*uis 7 c++ copy-constructor uniform-initialization c++11
"我们可以初始化一个类的对象,我们没有使用它来定义任何构造函数:
- 成员初始化.
- 复制初始化.
- 默认初始化.
例如:
Run Code Online (Sandbox Code Playgroud)struct Work { string author; string name; int year; }; Work s9 { "Bethoven", "Symphony No. 9 in D minor, Op. 125; Choral", 1824 }; // memberwise initialization Work currently_playing {s9}; // copy initialization Work none {}; // default initialization
C++编程语言第四版.第17.3.1节
例如:
struct Data
{
int mMember1;
float mMember2;
char mMember3;
};
int main()
{
Data aData_1{1,0.3,33};
Data aData_2{aData_1};
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
这必须起作用,虽然我得到的编译器错误与GCC一样多,与Clang一样多.两个编译器中的错误是"无法将数据转换为int".但是,实现复制构造函数时,此错误会消失,或者不使用圆括号语法实现它.问题是有点愚蠢,并改变圆形括号的卷曲问题得到解决.但为什么TC++ PL的规则没有被遵循?,是一个编译器问题还是我误解了什么?提前致谢.