读书人

throw基类对象引用的时候会把子类信息

发布时间: 2012-10-12 10:17:04 作者: rapoo

throw基类对象引用的时候会把子类信息丢失,怎么办?

C/C++ code
ChilldClass c;BaseClass& b=c;throw b;

捕获到的是基类对象,子类的成员信息没有了.

[解决办法]
试了一下,看来应该是try catch机制造成的。catch到的对象(即使用引用类型)和throw的不是同一个对象。
这样的话,一定是系统内部重新生成了一个Base类型的对象。这个过程中子类信息肯定丢失了。
[解决办法]
探讨
C/C++ code

ChilldClass c;
BaseClass& b=c;
throw b;


捕获到的是基类对象,子类的成员信息没有了.

[解决办法]
catch (E const &e)
{
}

读书人网 >C++

热点推荐