假设你有以下对象层次结构:C++为什么不是第二个表达式有效?
class Vehicle {
public:
virtual ~Vehicle() {}
};
class LandCraft: public Vehicle {};
class Truck: public LandCraft {};
现在,我们有两个表达式:
Truck truck;
Vehicle& vehicle = truck;
根据解决一门功课,第二个表达式是无效的。但为什么?我的编译器根本没有抱怨,而且我也没有看到这里应该出现什么问题。
哪个编译器?你是否尝试过“pedantic”标志(或同等标志)? – suszterpatt 2011-02-28 16:12:19
对我来说似乎也是正确的,因为通过使用对“Vehicle”的引用避免了“切片”问题(http://stackoverflow.com/questions/2822146/references-and-the-slicing-problem)。 – James 2011-02-28 16:13:27
看起来不错。这个问题是否真的使用'车辆&'?如果它只是使用'车辆',那么你会有切片问题。 – 2011-02-28 16:13:41