noi*_*isy 3 c++ constructor struct class
我一直认为,只有两个默认构造函数:没有参数的构造函数和复制构造函数.
但是今天我写了这样的话:
首先,我想确保在C++中c-style结构的初始化仍然有效.
struct Foo{
int a;
bool b;
char* c;
double d;
};
//..
Foo arr[2]={{0, true, "a", 3.14}, {1, false, "z", 42.0}};
Run Code Online (Sandbox Code Playgroud)
好的,这很有效.但是接下来,我决定检查后变化会发生什么struct来class.
class Bar{
public:
int a;
bool b;
char* c;
double d;
};
//..
Bar arr[2]={{0, true, "a", 3.14}, {1, false, "z", 42.0}};//works
Bar bar; //works
Bar bar2=arr[1]; //works
//Bar bar3(2, false, "so", 7.0); //of course doesn't work
//first, second, third ways works...
Run Code Online (Sandbox Code Playgroud)
只要class Bar没有任何私有/受保护字段(但它可以包含方法),这是可编译的.因此,只要编译器可以创建仅使用结构的简单特征的类,那么可以编译它.
第一个问题:我是对的吗?
第二个问题:它是编译器(在这种情况下是gcc)功能还是这正是标准所说的?
[编辑]:
代码//Bar bar3(2, false, "so", 7.0); //of course doesn't work不是问题;)
PS.我还在学英语,但有时候我犯的是愚蠢的错误.我正在尽我所能,用英语写问题和答案,但如果你在任何错误的情况下编辑我的帖子,我会很高兴.我保证,你的努力不会浪费.
我决定检查将struct更改为class后会发生什么.
struct和之间的唯一区别class是成员和默认继承模式的默认可见性.struct D : B { ...相当于class D : public B { public: ....
| 归档时间: |
|
| 查看次数: |
215 次 |
| 最近记录: |