开网站买自己做的东西,在线阅读 wordpress主题,海南省建设厅官方网站,常州知名做网站服务一、类成员初始化方法 C支持的类成员初始化方法有#xff1a;初始化列表、构造函数初始化、声明时初始化#xff08;C11后才支持#xff09;。从C11之后#xff0c;这三种初始化的方法都可以使用#xff0c;并不会存在冲突#xff0c;但是#xff0c;他们之间是有优先级…一、类成员初始化方法 C支持的类成员初始化方法有初始化列表、构造函数初始化、声明时初始化C11后才支持。从C11之后这三种初始化的方法都可以使用并不会存在冲突但是他们之间是有优先级顺序的这个优先级来源于他们在初始化的时间顺序后面初始化的会把前面的覆盖掉成员变量的初始化顺序是声明时初始化-初始化列表-构造函数初始化。因此假如三种初始化方式同时存在的话那么最后保留的成员变量值肯定是构造函数中初始化的值。下面分别介绍这几种初始化方法以及对应的使用场景。 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、声明时初始化C11后支持
3.1、使用方法
class A
{
public:int a 1; // 声明时初始化A() {}
};3.2、使用场景 声明时初始化比较直观看代码就能看到默认值不需要再去看构造函数