小编Gun*_*hin的帖子

删除调用析构函数但不删除对象?

所以我现在用c ++和指针工作了一年半,我想我让他们成功了.我之前多次调用对象上的删除,实际上删除了对象,或者至少我认为它们已经删除了.

下面的代码只是让我感到困惑:

#include <iostream>

class MyClass
{
public:
    int a;

    MyClass() : a(10) {
        std::cout << "constructor ran\n";
    }

    void method(std::string input_) {
        std::cout << param_ << "\n";
    }

    ~MyClass() {
        std::cout << "destructor ran\n";
    }

};

int main()
{

   MyClass* ptr = new MyClass;

   ptr->method("1");

   delete ptr;

   ptr->method("2.5");

}
Run Code Online (Sandbox Code Playgroud)

此代码输出:

constructor ran
1
destructor ran
2.5
Run Code Online (Sandbox Code Playgroud)

我很困惑为什么它没有抛出任何类型的错误 - 我期待一个异常或类似的内存,但没有.该for循环是有柜面有某种隐藏的垃圾收集,尽管据我所知,C中没有垃圾收集++.

任何人都可以解释为什么这个代码工作,或者我错误的代码,因为它不给我错误?

c++ pointers destructor memory-management

1
推荐指数
3
解决办法
5523
查看次数

标签 统计

c++ ×1

destructor ×1

memory-management ×1

pointers ×1