shi*_*zou 1 c++ syntax object c++11
为什么必须在构造函数中初始化对象数据成员,并且不能像使用基本类型一样默认初始化它们?是否可以像原始类型一样初始化它们?
这是一个例子:
class foo {
int a;
public:
foo(int _a) :a(_a) {};
};
class bar {
string a = "asdf";//no error
int num = 1;//no error
foo x(1); //error, why?
foo z;
public:
bar(): z(1){}//no error
};
Run Code Online (Sandbox Code Playgroud)
类内初始化程序仅使用operator=语法或使用大括号初始化程序列表,而不使用函数样式初始化.所以
foo x{1};
Run Code Online (Sandbox Code Playgroud)
代替
foo x(1);
Run Code Online (Sandbox Code Playgroud)
应该做的伎俩.
在您的情况下,您也可以使用
foo x = 1;
Run Code Online (Sandbox Code Playgroud)
但如果这会破坏foo的构造采取单一的int是explicit.
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |