我有这个代码示例:
#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?
答案 0 :(得分:4)
是的,确实如此。就像
double d = double();
double *p = new double();
将使用d
初始化0
,并使用*p
初始化0
。
()
初始化程序代表C ++中的 value-initialization ,归结为标量类型的零初始化。它绝不限于构造函数初始化列表。它可以在各种其他环境中使用。
自标准化时代开始以来,它一直在C ++中运行,除了在C ++ 03之前的语言版本中没有 value-initialization 这样的东西。在C ++ 98中,()
初始化程序触发了默认初始化,这也将标量类型清零。
在现代C ++(C ++ 11及更高版本)中,您可以使用{}
初始化程序而不是()
初始化程序来实现相同的效果。使用{}
,您也可以
double d{};
声明使用d
初始化的变量0
。
答案 1 :(得分:0)
执行_Field()
时,我相信http://webaim.org/techniques/keyboard/tabindex。