C/C++ 知识点:类成员初始化方法
2023-12-14 15:22:44
一、类成员初始化方法
C++支持的类成员初始化方法有:初始化列表、构造函数初始化、声明时初始化(C++11后才支持)。从C++11之后,这三种初始化的方法都可以使用,并不会存在冲突,但是,他们之间是有优先级顺序的,这个优先级来源于他们在初始化的时间顺序,后面初始化的会把前面的覆盖掉,成员变量的初始化顺序是声明时初始化->初始化列表->构造函数初始化。因此,假如三种初始化方式同时存在的话,那么最后保留的成员变量值肯定是构造函数中初始化的值。下面分别介绍这几种初始化方法以及对应的使用场景。
1、初始化列表
1.1、使用方法
class A
{
public:
int a; // 初始化列表
A(int a_):a(a_){}
};
1.2、使用场景
下面几种情况推荐使用初始化列表进行初始化
- const成员变量只能用成员初始化列表来完成初始化,而不能在构造函数内赋值
- 对象成员的初始化
- 引用成员的初始化
2、构造函数初始化
2.1、使用方法
class A
{
public:
int a; // 初始化列表
A(int a_, bool b) { a = a_; }
};
2.2、使用场景
非静态数据成员都支持在构造函数里面进行初始化
3、声明时初始化(C++11后支持)
3.1、使用方法
class A
{
public:
int a = 1; // 声明时初始化
A() {}
};
3.2、使用场景
声明时初始化比较直观,看代码就能看到默认值,不需要再去看构造函数
文章来源:https://blog.csdn.net/cloud323/article/details/134978864
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!