面试题答案
一键面试使用成员初始化列表初始化
#include <vector>
class MyClass {
private:
std::vector<int> vec;
public:
MyClass() : vec({1, 2, 3}) {}
};
在构造函数体内赋值初始化
#include <vector>
class MyClass {
private:
std::vector<int> vec;
public:
MyClass() {
vec = {1, 2, 3};
}
};
效率分析
- 成员初始化列表:
- 效率较高。在对象创建时,
vec
直接使用初始化列表中的值进行构造。std::vector
只需一次分配内存并填充数据,避免了额外的默认构造和赋值操作。
- 效率较高。在对象创建时,
- 构造函数体内赋值:
- 效率相对较低。首先
vec
会被默认构造,创建一个空的std::vector
,然后再通过赋值操作 (vec = {1, 2, 3};
) 重新分配内存并填充数据,这涉及到一次默认构造和一次赋值操作,相比成员初始化列表多了一些开销。
- 效率相对较低。首先