如何创建一个动态分配的c++对象及其指针
How to create a dynamically allocated C++ Object and its pointer?
这可能是一个新手问题,但我还是问了自己这个问题。
如果我有一个Object
类定义:
Object *p = new Object();
这个代码创建一个指针p
,并在位置p
,放置一个Object
对象,正确吗?
这意味着:
- 为Parent类的地址准备一个变量并命名为
p
- 分配足够的内存来存储父类的内容
- 调用父类的构造函数 在变量
p
中存储该内存的地址。编辑:回复评论:
这不是构造类的唯一方法。另一种是静态地分配一个类,例如
Parent p;
在这种情况下,您不将指向Parent类的指针存储在变量p中,而是存储整个类本身。在这种情况下:
- 类的内存位于为函数保留的帧的堆栈中,该帧定义了该变量(当程序加载到内存中时,堆栈只分配一次)
- 构造函数在程序到达变量声明点时自动调用。 当程序离开变量的作用域时,自动调用
- 析构函数
- 没有内存被释放(至少对于Parent类的实例没有),因为堆栈稍后被重用。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- CMake-按正确顺序将项目与C运行时对象文件链接
- 空基优化子对象的地址
- 将对象数组的引用传递给函数
- 你能重载对象变量名本身返回的内容吗
- C++使用整数的压缩数组初始化对象
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 将对象移动到std::shared_ptr
- 代理对象的常量正确性
- 提升 ASIO 无法识别计时器对象
- 将Ref对象作为类成员
- 将包含C样式数组的对象初始化为成员变量(C++)
- 如何返回一个类的两个对象相加的结果
- 使用std::函数映射对象方法
- 是否需要删除包含对象的"pair"?
- 如何在自删除后将对象设置为nullptr
- 迭代时从向量和内存中删除对象
- 构造对象的歧义
- 使用"std::unordereded_map"映射到"std::list"对象