成员初始化列表
成员初始化列表是C++中的一个特性,它允许在构造函数中对类的成员变量进行初始化。成员初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。例如:
class MyClass {
public:
MyClass(int a, int b) : m_a(a), m_b(b) { }
private:
int m_a;
int m_b;
};
在这个例子中,MyClass
的构造函数使用成员初始化列表来初始化m_a
和m_b
。
成员初始化列表的主要优势是提高程序运行效率。对于类类型成员变量,放到初始化列表中能够比较明显地看到效率的提升,但是如果是个简单类型的成员变量,比如 int m_test
,其实放在初始化列表或者放在函数体里效率差别不大1。
此外,有些情况下必须使用成员初始化列表:
- 该类的成员变量是个引用。
- 该类的成员变量是const类型。
- 该类是继承一个基类,并且基类中有构造函数,构造函数里有参数。
- 该类的成员变量类型是类类型,而该类的构造函数带参数时。
例如:
class Base {
public:
Base(int tmpa, int tmpb) { }
};
class CSub {
public:
CSub(int tmpv) { }
};
class A : public Base {
public:
int &m_yy;
const int m_myc;
CSub cmysub;
A(int &tmpvalue) : m_yy(tmpvalue), m_myc(tmpvalue), Base(tmpvalue, tmpvalue), cmysub(tmpvalue) {
m_x = 0;
m_y = 0;
m_yy = 180;
}
};
在这个例子中,A
的构造函数使用成员初始化列表来初始化m_yy
、m_myc
、Base
和cmysub
1。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)