面试题答案
一键面试#include <vector>
template <size_t Row, size_t Col, typename T>
class Matrix {
private:
std::vector<std::vector<T>> data;
public:
Matrix() : data(Row, std::vector<T>(Col, T())) {}
};
使用初始化成员列表相比在构造函数体中赋值的优势
- 效率更高:在构造函数体中赋值,成员变量
data
会先默认构造,然后在构造函数体中被赋值,这涉及到一次默认构造和一次赋值操作。而使用初始化列表,data
直接使用指定的构造函数进行构造,只需要一次构造操作,减少了不必要的构造和赋值开销。 - 适用于 const 成员和引用成员:如果类中有
const
成员变量或引用成员变量,必须在初始化列表中进行初始化,因为这些类型在构造之后不能被赋值。例如:
class Example {
private:
const int num;
int& ref;
public:
Example(int value, int& refValue) : num(value), ref(refValue) {}
};
在这个例子中,num
是 const
类型,ref
是引用类型,只能通过初始化列表进行初始化。