分配以下对象属性在哪里
Where is the following object property allocated?
我有以下代码,我认为ARR属性应分配在堆上,因为 test test 对象分配在堆上。但是由于某种原因,即使我不明确地称其为destuructor,即使我不称呼它。有解释吗?
代码:
class A {
public: ~A(){
cout<< "detor A"<< endl;
}
};
class C {
A arr[10];
public: ~C(){
// delete[]arr;
}
};
int main() {
C* test = new C();
delete test;
}
输出:
detor A
detor A
.
.
当对象必须被破坏并独立于分配对象的方式时,将调用对象的破坏者。
例如:
- 当本地对象超出范围时会自动破坏
- 用
new
分配的对象被delete
销毁 - 在其封闭对象的破坏过程中销毁了一个成员对象
最后的情况会导致您观察到的行为:您的delete test
,它要求arr
被销毁,这要求其每个项目都被销毁。
相关文章:
- C++我需要了解在哪里使用指针和双指针
- 未定义的引用在哪里
- 谷歌测试中的期望值存储在哪里
- 尽管遵循了规则,内存泄漏在哪里
- 静态数据成员模板专用化的实例化点在哪里
- 在哪里放置我的函数?进入我的母语 Gui 还是进入我的演示者?
- 在哪里声明结构运算符重载
- C++ 中的自定义异常:在哪里定义它们?
- 常量参数存储在哪里 (C++)?
- 如何在 c++ 中确定一条指令(以字节为单位)在哪里结束,另一条指令从哪里开始?
- 此递归函数的每次迭代的值存储在哪里?
- 如何告诉本机节点模块所需的dll存储在哪里?
- 警告:忽略模板参数上的属性..在 std::unique_ptr (-wignore 属性)的声明中
- 在哪里存储跨平台C++应用存储?
- 为什么 C++20 中的 [[可能]] 属性在这里引发警告?
- C++泛型类错误,问题出在哪里?
- 在标准中,模板参数的语法在哪里定义,例如,'std::function<int(char)>'?
- 将类作为主要参数的语法在哪里需要?
- 模板参数在 C++ 中存储在哪里?
- 分配以下对象属性在哪里