gpt4 book ai didi

c++ - 私有(private)和 protected 纯虚函数之间有什么区别吗?

转载 作者:IT老高 更新时间:2023-10-28 22:04:56 28 4
gpt4 key购买 nike

我可以理解,可能有理由将已实现的(与纯的)虚函数声明为私有(private)或 protected 。 Afaik,如果您将实现的虚拟方法声明为 protected ,您的子类可以调用基类的方法(而其他人不能)。如果将其声明为私有(private),则只有基类可以调用虚拟方法的默认实现。

但是,对于纯虚拟,没有基本实现......那么将纯虚拟声明为私有(private)或 protected 在功能上不等效吗? protected 纯虚拟没有意义,因为您永远无法调用基类的相应方法。 protected 纯虚拟是否有任何意义?

关于 SO 有一些类似的主题,但我找不到任何可以简明扼要地回答我的问题的内容。

最佳答案

Are there any scenarios where a protected pure virtual makes any sense?

我认为您在这里的意思是私有(private)的(而不是 protected ),但我想我理解您的意思。事实上,纯虚拟的访问类型可以在派生类中被覆盖。下面是一个示例,可以帮助您了解私有(private)和 protected 纯虚拟之间的区别:

class Parent
{
protected: virtual void foo() = 0;
private: virtual void bar() = 0;
public: void test() { foo(); bar(); }
};

class Child : public Parent
{
public: void test2() { foo(); /* bar(); // cannot be called here */ }
};

class GrandChild : public Child
{
// access types here can be anything for this example
public: void foo() { cout << "foo" << endl; }
public: void bar() { cout << "bar" << endl; }
};

关于c++ - 私有(private)和 protected 纯虚函数之间有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9764099/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com