所以我现在用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中没有垃圾收集++.
任何人都可以解释为什么这个代码工作,或者我错误的代码,因为它不给我错误?