面试题答案
一键面试在C++模板类中,对象成员的初始化顺序是按照它们在类中声明的顺序进行初始化,而不是按照在构造函数初始化列表中的顺序。
以下是代码示例:
#include <iostream>
template <typename T>
class MyClass {
public:
MyClass(T value1, T value2) : member2(value1), member1(value2) {
std::cout << "MyClass constructor called." << std::endl;
}
void printMembers() {
std::cout << "member1: " << member1 << ", member2: " << member2 << std::endl;
}
private:
T member1;
T member2;
};
int main() {
MyClass<int> obj(10, 20);
obj.printMembers();
return 0;
}
在上述代码中,member1
在member2
之前声明,尽管在构造函数初始化列表中member2
先被初始化,但实际初始化顺序是member1
先初始化,member2
后初始化。运行程序,输出结果为:
MyClass constructor called.
member1: 20, member2: 10
这表明对象成员按照在类中声明的顺序进行初始化。