【发布时间】:2011-06-06 06:48:09
【问题描述】:
以下代码正确编译并得到神秘输出:
特殊的投资功能 00000000
(环境:C++ VS2010)
#include <iostream>
#include <vector>
using namespace std;
class Security {
public:
virtual ~Security() {}
};
class Stock : public Security {};
class Investment : public Security {
public:
void special() {
cout << "special Investment function" << endl;
}
};
int main() {
Security* p = new Stock;
dynamic_cast<Investment*>(p)->special();
cout << dynamic_cast<Investment*>(p) << endl;
return 0;
}
怎么可能?取消引用 NULL 指针并获得“正确”输出而不是崩溃? 是不是VS2010的特殊“特性”?
现在我明白了。我做了一个测试,似乎在“特殊”函数中取消引用“this”会导致程序崩溃。
感谢您的帮助。
【问题讨论】:
标签: c++ visual-studio-2010 visual-c++