读书人

A a; B *p=(B*)amp;a;所带到的虚l函数的困

发布时间: 2013-04-07 12:50:11 作者: rapoo

A a; B *p=(B*)&a;所带来的虚l函数的困惑


淡定地写下如下程序,然后请出题者亲自运行:

int main()
{
unsigned char buf[] = {0xe5, 0xb0, 0xbc, 0xe7, 0x8e, 0x9b, 0x53, 0x42, 0x21, 0x0};
cout << (char*)buf << endl;
return 0;
}

[解决办法]
A是基类,B是派生类。

A a;
B *p=(B*)&a;

这样的写法是向下转型了:(

向上转型总是安全的(多态的一般做法,如A* pa = new B;),向下转型则未必是安全的。具体到楼主给出的代码,这里的向下转型肯定是不安全的(或者说是错误的)。
[解决办法]
引用:
引用:C/C++ code?1B *p=(B*)&a;
已经 UB 了,下面的提问都没有意义,楼主应该给提问人扫一下盲。

楼主就是提问人.

看 #3 的意思,楼主是面试的时候被问道的。
[解决办法]
楼主去看虚表的东西。

读书人网 >C++

热点推荐