【发布时间】:2012-05-10 18:49:01
【问题描述】:
可能重复:
Regular cast vs. static_cast vs. dynamic_cast
Undefined, unspecified and implementation-defined behavior
我遇到了一个奇怪的问题。在下面的 sn-p 中我定义了一个类
class NewClass
{
public:
void Test()
{
cout<<"NewClass Test"<<endl;
}
};
在我的 main() 方法中,我写:
void main()
{
int *ptr = new int();
NewClass *n = ((NewClass *)ptr);
n->Test();
}
它会显示“NewClass Test”。我不明白如何将 any 指针类型转换为 NewClass 并且仍然可以正常工作。
提前致谢!
【问题讨论】:
-
未定义的行为意味着任何事情都可能发生,包括欺骗您认为它有效。