堆分配的对象构造函数
Heap-allocated object constructors
假设我需要从另一个容器创建一个堆分配容器。初始容器是否也需要堆分配,或者其值是否隐式复制到堆中,因此原始容器可以只是一个局部变量?例:
list<int> my_function()
{
set<int> my_set;
my_set.insert(1);
my_set.insert(2);
list<int> *my_list = new list<int>(my_set.begin(), my_set.end());
return *my_list;
}
对
list<int> my_function()
{
set<int> *my_set = new set<int>;
my_set->insert(1);
my_set->insert(2);
list<int> *my_list = new list<int>(my_set->begin(), my_set->end());
return *my_list;
}
以上哪项是正确的?当然,我想避免在我不知情的情况下复制堆内存。
这是正确的:
list<int> my_function()
{
set<int> my_set;
my_set.insert(1);
my_set.insert(2);
return list<int>(my_set.begin(), my_set.end());
}
我不确定您所说的"已分配堆"是什么意思,但请记住,list
和set
已经将数据存储在堆上。
相关文章:
- 对象实例化调用构造函数的次数太多
- Arduino C++在构造函数中用参数声明对象数组
- 模板,函数使用错误的构造函数来复制我的对象
- 我使用向量来创建类对象列表.初始化向量时如何使用参数调用构造函数?
- std::vector::p ush_back() 不会在 MSVC 上编译具有已删除移动构造函数的对象
- 通过构造函数创建的所有对象都具有相同的向量
- 是什么让放置新调用对象的构造函数?
- 复制包含C++所有元素的对象!(构造函数和赋值,最佳实践?
- C++ 对象指针数组的复制构造函数
- 在构造函数中输入对象时C++类成员作用域
- C++:将初始化的对象传递给另一个类的构造函数;需要不必要的构造函数吗?
- 这个C++编译器优化(在自身的实例上调用对象自己的构造函数)的名称是什么,它是如何工作的?
- 如何从构造函数副本 T(const T&)调用对象 T?
- 将另一个类的对象传递到当前类C++的构造函数中(不是成员初始化)
- 如何将我编写的对象传递到另一个类的构造函数中?
- 使用向量初始化参数化构造函数的对象数组
- 在C++中将对象从另一个类传递到另一个类的构造函数?
- 在 C++ 中声明 const 对象需要用户定义的默认构造函数.如果我有一个可变成员变量,为什么不呢?
- 构造函数对象赋值是否泄漏内存
- gcc中不可移动构造函数对象的std::函数