赋值兼容规则解析-谭浩强C++

赋值兼容规则的问题,在学 C++继承的时候挺容易绕进去的。谭浩强书里的讲法比较基础,但说得还算清楚:派生类对象可以赋值给基类对象,反过来就不行了。嗯,说白了就是“儿子可以当爸爸用,爸爸不能直接变成儿子”。Base b; Derive d; b = d; 这种写法只会拷贝基类那部分,派生类扩展的东西就没了。

用起来最容易踩坑的地方是你以为对象都赋值了,其实派生类那部分压根没进去。如果你在做对象切割相关的操作,或者你压根就是想用多态,那建议用引用或者指针来搞,比如 Base &ref = d;Base* ptr = &d;,这样才靠谱。

另外我整理了几个不错的相关文章,想更深入理解派生类和基类怎么打交道,可以看看这些:

如果你还在用对象赋值搞继承逻辑,建议你停一停,看看这些规则。别等调试到半夜才发现,原来数据根本没进来。

ppt 文件大小:8.81MB