赋值兼容规则解析-谭浩强C++
赋值兼容规则的问题,在学 C++继承的时候挺容易绕进去的。谭浩强书里的讲法比较基础,但说得还算清楚:派生类对象可以赋值给基类对象,反过来就不行了。嗯,说白了就是“儿子可以当爸爸用,爸爸不能直接变成儿子”。Base b; Derive d; b = d;
这种写法只会拷贝基类那部分,派生类扩展的东西就没了。
用起来最容易踩坑的地方是你以为对象都赋值了,其实派生类那部分压根没进去。如果你在做对象切割相关的操作,或者你压根就是想用多态,那建议用引用或者指针来搞,比如 Base &ref = d;
或 Base* ptr = &d;
,这样才靠谱。
另外我整理了几个不错的相关文章,想更深入理解派生类和基类怎么打交道,可以看看这些:
- 用派生类对象初始化基类引用 - C++快速入门
- 类继承:基类和派生类
- 派生类声明 - 面向对象编程与 C++
- C++类继承示例类 A 为基类,类 B 为派生类
- C++ 虚基类与派生类构造函数详解
- 对象赋值-第 3 章类与对象
- C++对象赋值与复制详解
如果你还在用对象赋值搞继承逻辑,建议你停一停,看看这些规则。别等调试到半夜才发现,原来数据根本没进来。
8.81MB
文件大小:
评论区