该问题来自社区帖: https://bbs.csdn.net/topics/615685611.为符合问答规范, 该问题经过ChatGPT优化
问题描述:为什么当我把虚函数`seta`删掉时,程序会无限输出1,但是当我去掉`[]`时程序的运行结果是正确的,为什么之前那两种情况会错? ``` #include using namespace std; class people { public: int a; virtual void seta(int b) { } ~people() { cout << "1"<< endl; } }; class stu:public people { public: int a; void seta(int b) { a = b; } ~stu() { cout << "2" << endl; } }; int main() { people a; people* p = new stu; delete []p; } ``` 优化后的问题:为什么当我把虚函数`seta`删掉时,程序会无限输出1,但是当我去掉`[]`时程序的运行结果是正确的?
问题描述:为什么当我把虚函数`seta`删掉时,程序会无限输出1,但是当我去掉`[]`时程序的运行结果是正确的,为什么之前那两种情况会错? ``` #include using namespace std; class people { public: int a; virtual void seta(int b) { } ~people() { cout << "1"<< endl; } }; class stu:public people { public: int a; void seta(int b) { a = b; } ~stu() { cout << "2" << endl; } }; int main() { people a; people* p = new stu; delete []p; } ``` 优化后的问题:为什么当我把虚函数`seta`删掉时,程序会无限输出1,但是当我去掉`[]`时程序的运行结果是正确的?