没有"新"C++的对象初始化

Cal*_*m C 4 c++ oop syntax standards

我想知道C++中的对象初始化.如果可能,我应该避免使用'new'关键字,因为我不需要它提供的内容(动态分配,对吧?),我不想手动删除对象.我在调用我的对象的初始化时没有使用新的麻烦.我有这门课:

class Apodization {

public:
    Apodization()
    {
    std::cout << "Constructor for Apodization" << std::endl;
    }
}
Run Code Online (Sandbox Code Playgroud)

而这段代码:

Apodization* apoObj();
// Apodization* apoObj = new Apodization();
Run Code Online (Sandbox Code Playgroud)

使用new创建对象时,打印按预期发生,但不是没有.我猜这是因为我只是在上面的例子中创建了Apodization类型的指针,但我不知道从那里去哪里.我想知道在不使用new关键字的情况下初始化Apodization对象的正确方法.谢谢您的帮助!我发现来自Java和Python的C++类有点奇怪.

W.K*_*K.S 14

在不new使用RAII的情况下初始化对象(资源分配是初始化).这意味着当您声明Apodization的实例时,实例的内存在堆栈上分配,然后调用构造函数来设置初始状态.

这意味着只需写:

int main(){
   Apodization apodization;
   //apodization.doSomething();
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

是你需要得到的球!(我自己也是一个Java人,我喜欢这个简洁!)

当对象在堆栈上分配时,析构函数将在作用域的末尾自动调用; 无需手动内存管理.

PS我强烈建议你阅读Bjarne Stroustrup C++ 11编程指南!