[英]Initialization in list - default value
我有以下代码示例:
#include <iostream>
using namespace std;
class Polygon
{
private:
double _Field;
public:
Polygon(): _Field(){}
void show_field(){ cout << _Field << endl; }
};
int main()
{
Polygon P1;
P1.show_field();
return 0;
}
我只是想知道为什么show()方法总是显示0值? 是否在列表中初始化
Polygon(): _Field(){}
如果没有参数,默认情况下将给定字段初始化为0?
是的,它确实。 就像
double d = double();
double *p = new double();
将以0
初始化d
并分配以0
初始化的*p
。
()
初始值设定项在C ++中代表值初始化 ,对于标量类型,其归结为零初始化。 它绝不限于构造函数初始化器列表。 它可以用于多种其他环境。
从标准化时代开始,它就在C ++中以这种方式工作,除了在C ++ 03之前的版本中该语言没有值初始化之类的东西。 在C ++ 98中, ()
初始化程序触发了default-initialization ,它也将标量类型清零了。
在现代C ++(C ++ 11和更高版本)中,可以使用{}
初始化程序代替()
初始化程序来达到相同的效果。 使用{}
您还可以
double d{};
声明变量d
初始化为0
。
我相信,当您执行_Field()
您将执行零初始化 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.