构造函数和初始化列表如何改写成长尾词?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1069个文字,预计阅读时间需要5分钟。
再谈构造函数 + 初始化列表 + 我们可以在函数体内初始化,也可以在构造函数之前初始化列表。为什么会有初始化列表这个选项呢?我们可以理解为对于对象来说,初始化列表是成员。
再谈构造函数
初始化列表
我们可以在函数体内初始化,也可以在构造函数之前初始化列表初始化。
为什么会有初始化列表这个东西呢?我们可以理解对于对象来说,初始化列表是成员变量定义的地方。
class A {
public:
A()
:_c(1)
{}
private:
int _a = 1;//声明
int _b = 2;
//const int _c;
const int _c = 1;//这时候不是初始化,给的是缺省值。
};
int main()
{
A aa;//这里的定义是对象整体的定义,每个成员什么时候定义?
//必须给成员变量找一个定义的位置,不然像const类型的成员不好处理,
return 0;
}
在成员变量中加上const成员变量之后就不能正确运行了,这是因为const变量必须在定义的位置初始化,因为const只有一次初始化的机会。有const成员变量构造函数生不成了,所以要处理const成员变量。const int _c = 1;//这时候不是初始化,给的是缺省值。 C++11之前怎么处理呢?所以必须给成员变量找一个定义的位置,不然像const类型的成员不好处理。
那成员变量中的缺省值是什么时候用的?缺省值也会在成员变量初始化列表中走。
本文共计1069个文字,预计阅读时间需要5分钟。
再谈构造函数 + 初始化列表 + 我们可以在函数体内初始化,也可以在构造函数之前初始化列表。为什么会有初始化列表这个选项呢?我们可以理解为对于对象来说,初始化列表是成员。
再谈构造函数
初始化列表
我们可以在函数体内初始化,也可以在构造函数之前初始化列表初始化。
为什么会有初始化列表这个东西呢?我们可以理解对于对象来说,初始化列表是成员变量定义的地方。
class A {
public:
A()
:_c(1)
{}
private:
int _a = 1;//声明
int _b = 2;
//const int _c;
const int _c = 1;//这时候不是初始化,给的是缺省值。
};
int main()
{
A aa;//这里的定义是对象整体的定义,每个成员什么时候定义?
//必须给成员变量找一个定义的位置,不然像const类型的成员不好处理,
return 0;
}
在成员变量中加上const成员变量之后就不能正确运行了,这是因为const变量必须在定义的位置初始化,因为const只有一次初始化的机会。有const成员变量构造函数生不成了,所以要处理const成员变量。const int _c = 1;//这时候不是初始化,给的是缺省值。 C++11之前怎么处理呢?所以必须给成员变量找一个定义的位置,不然像const类型的成员不好处理。
那成员变量中的缺省值是什么时候用的?缺省值也会在成员变量初始化列表中走。

