将对象添加到预先分配的对象数组中
Adding objects to a pre allocated array of objects
#include <iostream>
class Object {
public:
int x;
Object() { }
Object(int x) {
this->x = x;
}
};
class SomeClass {
public:
Object array[10];
int n;
SomeClass() { n = 0; }
void insert(Object o) {
array[n++] = o;
}
};
int main() {
SomeClass s;
Object test = Object(4);
s.insert(test);
return 0;
}
我有这个例子,我在SomeClass
中预先分配了一个对象数组,然后在其他方法中,main
在这个例子中,我创建了另一个对象并将其添加到数组中SomeClass
我认为我应该做的一件事是从array[10]
切换到指针数组,以便我只在真正需要时才创建对象。
但我的问题是,当我array[n++] = o
用新对象"o"替换它时,最初分配给array[0]
的内存会发生什么?它会被取消分配吗?
不,什么也没发生。调用对象的赋值运算符以替换对象。
对于这个简单的类,赋值运算符是默认运算符,它或多或少地复制对象的每个成员,一次复制一个。
(目前还不需要进入移动运算符等)
相关文章:
- 将对象数组的引用传递给函数
- 如何使用Visual Studio 2017在C++中为参数化对象数组使用唯一指针
- 在c++中尝试对对象数组进行排序时,出现std:bad_alloc错误
- 类对象数组的问题会导致崩溃
- Arduino C++在构造函数中用参数声明对象数组
- 使用对象数组对 SFML 进行动画处理
- C++ 对象数组堆栈溢出
- 如何将对象数组作为参数传递给模板
- 使用向量初始化参数化构造函数的对象数组
- 如何初始化对象数组?
- C++创建对象数组
- 在对象数组中搜索字符串并返回相应值的函数
- 有没有办法使用该类的构造函数初始化另一个类的私有部分内的对象数组?
- 如何在运行时在对象数组中动态追加新对象C++并打印它们
- 为什么我在声明对象数组时不能使用 -> 运算符?
- 编译时生成应在构造函数中创建的非 constexpr 对象数组
- 使用 C++ 创建对象数组
- 对象数组打印空白字符串
- 重载运算符 [] 用于从对象数组中给出特定索引
- 如何在 C++ 中使用提升属性树从 JSON 文件中读取对象数组