在堆栈上实例化一个类,其中var在头文件中定义

Bou*_*ner 1 c++ heap stack instantiation

我目前正在尝试编写适当的C++代码(让它运行对于一些小型原型来说是好的,但它很难看).

我最近意识到堆和堆实例化的区别(O m = new O()vs O m()).

现在我有一个类,其中头文件定义了一个变量,它保存了一个表定义.

ChunkLoader.hpp:

TablePartion*tablePartial_;

ChunkLoader.cpp:

ChunkLoader(){ta​​blePartial_ = new TablePartial(true,0,1); }

现在我想在堆栈上实例化tablePartial,但我不能使用: TablePartial tablePartial_(true, 0, 1);

我完全失明了?如何在堆栈上分配tablePartial_?或者我完全错了,我不能在构造函数中使用,因为它会在构造函数之后超出范围并因此被释放?但是因为我读到堆栈变量在性能方面更好,所以我想使用堆栈实例化(并获得红色delete).

主要原因:堆栈溢出告诉我尽可能摆脱指针.:)

Bli*_*ndy 7

首先,您应该避免使用"堆栈上"或"堆上"这些术语,它们的实现细节与所讨论的概念无关.相反,我们讨论对象的生命周期automatic(与堆栈或多或少相关),dynamic(或多或少与堆相关),static(或多或少与全局变量相关),thread(这是一个线程特定的全局).

在回答您的具体问题时,您可以使用构造函数初始值设定项来初始化您的变量:

ChunkLoader() 
   : tablePartial_(true, 0, 1) 
{ 
}
Run Code Online (Sandbox Code Playgroud)