gpt4 book ai didi

c++ - 使用构造函数作为默认成员值

转载 作者:太空狗 更新时间:2023-10-29 23:52:14 25 4
gpt4 key购买 nike

在 C++11 中,可以不使用初始化列表来初始化对象:

 class Z{
int a=0;
int b;
z():b(0){} //<-- a already initialized
};

我想知道的是对于类类型,哪些是更可取的:

 class Z{
std::vector<int>a=std::vector<int>();
//or instead:
std::vector<int>a();
int b;
z():b(0){} //<-- a already initialized
};

最佳答案

不需要显式默认初始化a,因为它将被默认构造。这会很好:

class Z
{
std::vector<int> a;
int b = 0;
z() {} //<-- a, b already initialized
};

请注意,您的第二个变体是函数声明,而不是初始化:

// function a(), returns std::vector<int>
std::vector<int> a();

所以你应该使用的是

// data member a is an std::vector<int>. Default construct it.
std::vector<int> a{};

当然,如果你不想默认构造,那么这个声明点的初始化就很方便了:

std::vector<int> a{0,1,2,3};

关于c++ - 使用构造函数作为默认成员值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16670571/

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