c++ - C++类中的C'tor

标签 c++ class constructor nested

我可以声明新变量吗,比如一个不同的类, 在一个c'tor? 假设我有一个名为 List 的类和一个 Node(嵌套在 List 类中),那么我想做的是:

List::List(int num)
{
Node Nod(num); //creating a new Node which is holding num
List_Head=&Nod; //List_Head is a Node pointer variable of List class
}

执行此操作后,我会收到以下运行时错误:

Debug Assertion Failed!

Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

有什么帮助吗?

最佳答案

您创建的 Nod 的范围和生命周期仅限于构造函数 List::List() 因为它是一个本地/自动对象。

一旦构造函数返回 Nod 不存在并且任何指向它的东西 (List_Head) 都是悬空指针,对它的引用将导致未定义的行为 很可能是崩溃。

如果您想在构造函数主体之外引用它,您应该通过调用 new 在动态内存(堆)上创建 Node

List_Head = new Node(num);

理想情况下,您应该为 List_Head 使用某种智能指针 而不是原始指针,这样您就不必进行手动内存管理。如果你不能,你必须打电话:

delete List_Head;

在您完成使用后以避免内存泄漏。

关于c++ - C++类中的C'tor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9996713/

相关文章:

c++ - MFC 应用程序中的 RSS 提要和程序更新

c++ - 每次我将我的(播放旋律)代码上传到 arduino 并按下按钮时,它都会跳过数组中的相同音符。怎么会?

javascript - 将 ES6 类传递给 Workerize

c# - C# 中的绑定(bind)/链接对象/类,如 LINQ

c++ - 拷贝构造函数的调用逻辑

c++ - 在 C++ 中使用 vector 从文本文件中读取矩阵

c++ - 为什么我不能将 auto 与 std::thread 一起使用?

php - WooCommerce 无法从产品类别访问购物车

java - 从具有 Java 构造函数抛出异常的类进行子类化

c++ - 是否可以在构造函数中使用模板方法模式?