繁体   English   中英

列表中的初始化-默认值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM