gpt4 book ai didi

c++ - 列表中的初始化 - 默认值

转载 作者:行者123 更新时间:2023-11-30 01:48:02 24 4
gpt4 key购买 nike

我有这个代码示例:

#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 中,() 初始化器触发了默认初始化,这也将标量类型归零。

在现代 C++(C++11 及更高版本)中,您可以使用 {} 初始化器代替 () 初始化器来实现相同的效果。使用 {},您还可以执行

double d{};

它声明变量 d 初始化为 0

关于c++ - 列表中的初始化 - 默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30740115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com