如果派生类没有重写基类中的虚函数会怎么样?

class Base {
public:
    virtual void gun() {
        std::cout << "Base gun" << std::endl;
    }
};

class Derived : public Base {
private:
    char c;
};

int main() {
    std::cout << "sizeof(Base)=" << sizeof(Base) << std::endl;
    std::cout << "sizeof(Derived)=" << sizeof(Derived) << std::endl;

    Base *b = new Derived();
    b->gun();

    return 0;
}

如果派生类没有重写基类中的虚函数,那么派生类依然会创建虚指针,只不过派生类的虚指针指向的是基类中的虚表。

发布了199 篇原创文章 · 获赞 149 · 访问量 38万+

猜你喜欢

转载自blog.csdn.net/zgaoq/article/details/103891858