axi*_*xis 4 c++ standards initialization
为什么我不能那样做
class A {
public:
int x = 10;
...
};
Run Code Online (Sandbox Code Playgroud)
我必须那样做?
class A {
public:
int x;
A(){
x = 10;
...
}
...
};
Run Code Online (Sandbox Code Playgroud)
这是因为C++试图比C这样的语言更安全?还有其他原因吗?
这与类型安全无关,两个例子都是安全的.
在创建语言时,您需要定义允许的内容和不允许的内容.由于编写黑名单将是一种永无止境的体验,因此语言通常以白名单方式编写,增加了越来越多可能的东西.
但是,如果没有明确权衡后果,就不应允许事情发生.每当你想要允许新的东西,你需要检查:
此外,它还意味着有更多的人可以学习那些希望使用该语言的人.
但是,你在这里要求的是相对容易的.对于类,它可以被视为函数默认参数的对应物.这已在C++ 11中采用,因为它是在编写多个构造函数时保证默认值一致性的最简单方法.
就个人而言,在使用C++ 11时,我建议以这种方式初始化所有内置类型(如果只是0),就像我建议在声明局部变量时初始化它们一样:这样你就不会忘记在其中一个构造函数中初始化它们.
| 归档时间: |
|
| 查看次数: |
8513 次 |
| 最近记录: |