Han*_*Han 2 c++ virtual inheritance
我有一个基类叫Packet:
// Header File
class Packet {
public:
virtual bool isAwesome() const {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
和一个名为的继承类AwesomePacket:
// Header File
class AwesomePacket : public Packet {
public:
virtual bool isAwesome() const {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我实例化AwesomePacket并调用时isAwesome(),该方法返回false而不是true.为什么会这样?
你的代码调用在任何可能性都是在Packet构造函数中是令人敬畏的:
Packet::Packet()
{
// this will always call Packet::isAwesome
if (isAwesome())
{
}
}
Run Code Online (Sandbox Code Playgroud)
即使使用此Packet构造函数构造AwesomePacket对象的父对象,也不会调用AwesomePacket :: isAwesome.这是因为此时对象还不是AwesomePacket.