gpt4 book ai didi

c++ - 在这种特定情况下,使用成员初始值设定项列表和在构造函数中赋值有区别吗?

转载 作者:IT老高 更新时间:2023-10-28 11:58:53 27 4
gpt4 key购买 nike

在内部和关于生成的代码,有没有真正的区别:

MyClass::MyClass(): _capacity(15), _data(NULL), _len(0)
{
}

MyClass::MyClass()
{
_capacity=15;
_data=NULL;
_len=0
}

谢谢...

最佳答案

需要使用初始化列表来初始化常量成员、引用和基类

当你需要初始化常量成员、引用和传递参数给基类构造函数时,如注释中提到的,你需要使用初始化列表。

struct aa
{
int i;
const int ci; // constant member

aa() : i(0) {} // will fail, constant member not initialized
};

struct aa
{
int i;
const int ci;

aa() : i(0) { ci = 3;} // will fail, ci is constant
};

struct aa
{
int i;
const int ci;

aa() : i(0), ci(3) {} // works
};

示例(非详尽)类/结构包含引用:

struct bb {};

struct aa
{
bb& rb;
aa(bb& b ) : rb(b) {}
};

// usage:

bb b;
aa a(b);

以及初始化需要参数的基类的示例(例如,没有默认构造函数):

struct bb {};

struct dd
{
char c;
dd(char x) : c(x) {}
};

struct aa : dd
{
bb& rb;
aa(bb& b ) : dd('a'), rb(b) {}
};

关于c++ - 在这种特定情况下,使用成员初始值设定项列表和在构造函数中赋值有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4589237/

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