我正在使用visual studio 2013并打印一些cout命令来测试,当我调试我的代码时,控件进入两个类的析构函数,但它不在控制台上打印cout语句。
#include <iostream>
using namespace std;
class Uni
{
public:
~Uni()
{
cout << "I am in Uni Destructor" << endl;
}
Uni()
{
cout << "I am in Uni Constructor" << endl;
}
};
class Student: public Uni
{
public:
Student()
{
cout << "I am in Student Constructor" << endl;
}
~Student()
{
cout << "I am in Student Destructor" << endl;
}
};
int main()
{
Student s;
system("pause");
return 0;
}
输出:
我在Uni Constructor
我在学生构造函数
答案 0 :(得分:1)
我想你在这一点上得到了输出,即在pause
之后。
int main()
{
Student s;
system("pause");
// here; but s is not destroyed yet
return 0;
}
但此时s
仍然没有被摧毁。当它离开声明的范围时,即当离开函数main
时,它将被销毁。
您可以将s
放入进一步的测试范围。
int main()
{
{
Student s;
} // s will be destroyed here
system("pause");
return 0;
}
答案 1 :(得分:0)
你的代码看起来很好,cout是一个缓冲的控制台输出流对象实例:你确定你的析构函数消息不仅仅是在最后一个结束括号和cout冲洗之后写入的吗?