面试题答案
一键面试初始化成员列表基本语法格式
在C++中,初始化成员列表紧跟在构造函数的参数列表之后,使用冒号(:
)分隔,多个成员变量的初始化之间用逗号(,
)分隔。其语法格式如下:
ClassName::ClassName(parameters) : member1(initializer1), member2(initializer2), ... {
// 构造函数体(可省略,若成员变量都在初始化列表中初始化)
}
示例代码
#include <iostream>
// 自定义类
class MyClass {
public:
MyClass(int value) : data(value) {
std::cout << "MyClass constructor called." << std::endl;
}
int getData() const {
return data;
}
private:
int data;
};
class OuterClass {
public:
// 使用初始化成员列表初始化成员变量
OuterClass(int num, int myClassValue) : intVar(num), myObject(myClassValue) {
std::cout << "OuterClass constructor called." << std::endl;
}
void printInfo() const {
std::cout << "intVar: " << intVar << ", MyClass data: " << myObject.getData() << std::endl;
}
private:
int intVar;
MyClass myObject;
};
你可以这样使用这个类:
int main() {
OuterClass obj(10, 20);
obj.printInfo();
return 0;
}
在上述代码中,OuterClass
的构造函数使用初始化成员列表初始化了intVar
和myObject
。intVar
被初始化为num
,myObject
调用MyClass
的构造函数并初始化为myClassValue
。