析构函数不在控制台上打印行
Destructor doesn't print line on console
我正在使用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
我在学生构造函数中
我想你在这一点上得到输出,即在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;
}
您的代码看起来不错,cout ist 一个缓冲的控制台输出流对象实例:您确定您的析构函数消息不只是缓冲在最后一个右大括号和 cout 刷新之后写入吗?
相关文章:
- c ++控制台应用程序,如何在控制台外部打印字符
- 控制台打印时间功能产生1
- 如何通过按 F2 或 F3 等键使控制台打印某些内容
- cout 不打印任何内容到控制台
- 如何在 C++ 中将 U32 字符串和 U16string 打印到控制台
- 打印到文件和控制台 C++
- 在 c++ 中打印到控制台的最佳方式是什么?
- 我的控制台正在打印随机单词以及没有执行正确的数学运算
- C++控制台打印在同一行上,带回车符
- 硬编码字符串与强制转换为 PUCHAR 并打印到控制台时从控制台读取的字符串的结果不同
- V8 控制台.log不打印
- 使用 C++ shell 为 C++ 中的 2 D 动态数组赋值,控制台不会打印出任何内容
- cURL 保持打印传输到控制台?
- SDL 未打印到控制台
- qDebug() 在升级到 ubuntu 17.10(和 Fedora)后停止工作(不再打印到控制台)
- 使用具有 UTF8 编码的源文件将 UTF8 符号打印到 Windows 控制台
- 如何在 ATL COM 模块中打印控制台输出
- 打印到控制台或字符串/流
- Cout 无法在显示器上打印(控制台)
- 禁止从导入的 DLL 打印控制台