微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C++ 私有继承如何防止多态?

如何解决C++ 私有继承如何防止多态?

class A
{
public:
    A() {}
    void run() {};
};

class B : private  A
{
public:
    B() {}

    using A::run; (1)
    using A::A;   (2)
};

int main()
{
    //A* a = new B; // not compile (3)
    B b;
    b.run();
}

为什么我不能在(3)中使用多态? 即使在 (2) 中添加 using A::A; 后,它也不会编译。我预计它会在 (2) 中添加 using A::A; 后与 (1) 中的 using A::run 一样编译,但不幸的是,它没有编译。 如何解释 (3) 中的这一行,从而导致这种行为?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。