C ++构造函数初始化堆栈中的非基本成员变量

时间:2018-11-22 16:43:00

标签: c++

我有一个关于C ++构造函数的基本问题。

让我们说我有一个类似这样的类定义:

class Project {
public:
    int time;
    std::vector<Task> tasks;

    Project();
};

我想在源文件中初始化此向量,但是我不确定执行此操作的正确和有效方法。

Project::Project() {
    time = 0;
    tasks = std::vector<Task>();
}

这是初始化堆栈中对象的正确方法吗?

1 个答案:

答案 0 :(得分:0)

向量可以使用自定义分配器,因此您可以使用专门用于自定义分配器的向量类(例如this one)。

但是,您不能使用构造函数本身的堆栈,因为它在构造函数完成后将变得无效。您要么需要在对象本身中分配内存(在链接的示例中,使arena成为类的成员),要么将其作为构造函数的参数接收。