所以我已经使用 c++ 和指针工作了一年半了,我认为我让它们成功了。我之前已经多次对对象调用 delete 并且对象实际上被删除了,或者至少我认为它们确实被删除了。
下面的代码让我很困惑:
#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");
}
此代码输出:
constructor ran
1
destructor ran
2.5
我很困惑为什么它没有抛出任何类型的错误 - 我期待内存超出范围异常或类似情况,但什么也没有。循环在那里,for
以防有某种隐藏的垃圾收集,即使据我所知,C++ 中没有垃圾收集。
谁能解释为什么这段代码有效,或者我在哪里出错了,因为它不会给我错误?