c++ - C++ 构造函数在堆栈中初始化非原始成员变量
问题描述
我有一个关于 C++ 构造函数的基本问题。
假设我有一个类似这样的类定义:
class Project {
public:
int time;
std::vector<Task> tasks;
Project();
};
我想在我的源文件中初始化这个向量,但是我不确定这样做的正确和有效的方法。
Project::Project() {
time = 0;
tasks = std::vector<Task>();
}
这是在堆栈中初始化对象的正确方法吗?
解决方案
向量可以使用自定义分配器,因此您可以使用专门用于自定义分配器的向量类(例如这个)。
但是,您不能使用构造函数本身的堆栈,因为它在构造函数完成后变得无效。您要么需要在对象本身中分配内存(在链接的示例中,使arena
该类的成员),要么将其作为构造函数的参数接收。
推荐阅读
- android - Android 应用程序的漏洞问题。X509 实现
- python-3.x - heroku 上的 Discord.py | 命令不起作用
- ibm-doors - using DXL : 编辑模式下链接的开源模块
- php - 使用 PHP CURL 处理 Woocommerce API
- mysql - 给定这张表,如何确定下一个交货日?SQL
- php - 如何在 Laravel 上只显示值?
- python - Python3 - 如何连接 GeoJSON 的字典?
- uart - 直流电源供电时的 CC430F6137 UART 问题
- flutter - Flutter AnimatedBuilder 构建器错误
- python - Tensorflow keras:加载优化器权重的问题