【发布时间】:2012-10-03 04:07:42
【问题描述】:
假设您有以下对象层次结构:
class Vehicle {
public:
virtual ~Vehicle() {}
};
class LandCraft: public Vehicle {};
class Truck: public LandCraft {};
现在,我们有两个表达式:
Truck truck;
Vehicle& vehicle = truck;
根据一个作业的解决方案,第二个表达式无效。但为什么?我的编译器根本没有抱怨,我看不出这里应该有什么问题。
【问题讨论】:
-
哪个编译器?您是否尝试过
-pedantic标志(或等效标志)? -
对我来说似乎也是正确的,因为您通过使用对
Vehicle(stackoverflow.com/questions/2822146/…) 的引用来避免“切片”问题。 -
我觉得不错。这个问题实际上使用
Vehicle&吗?如果它只使用Vehicle,那么你就会遇到切片问题。 -
在 pedantic 上编译得很好,我看不出有任何问题。
-
车辆类定义需要分号。
标签: c++