在 C++ 中继承时,受保护的方法可以成为私有方法吗?

格雷布利

我一直在玩继承,我试过这个代码:

#include <iostream> 
#include <string>

class Foo
{
public:
    virtual void func() = 0;

protected:
    virtual void doSum() const = 0;
};

class Bar : public Foo
{
public:
    void func() { 
        doSum();
    }

protected:
    void doSum() const
    {
        std::cout << "hi, i'm doing something" << std::endl;
    }
};

int main() 
{ 
    Foo* ptr = new Bar();
    ptr->func();

   return 0; 
}

所以我也试过像这样用 private替换protected关键字class Bar

private:
    void doSum() const
    {
        std::cout << "hi, i'm doing something" << std::endl;
    }

并且代码碰巧工作得一样......

所以我的问题是,如果我在实现派生类时声明一个私有的受保护方法有什么区别吗?如果有,它们是什么?我什至可以这样做吗?

萨胡

所以我的问题是,如果我在实现派生类时声明一个私有的受保护方法有什么区别吗?

是的。

如果有,它们是什么?

这将阻止派生类的下一级能够调用派生类的实现。

class Foo
{
   protected:
      virtual void doSum() const = 0;
};

class Bar : public Foo
{
   private:
      void doSum() const
      {
         std::cout << "hi, i'm doing something" << std::endl;
      }
};

class Baz : public Bar
{
   public:
      void doSum() const
      {
         //===========================
         Bar::doSum(); // NOT ALLOWED
         //===========================
      }
};

我什至可以这样做吗?

是的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

私有方法与C ++中的Lambda

来自分类常见问题

C ++枚举类可以有方法吗?

来自分类Dev

编写辅助方法时自动继承所有方法签名?(C#)

来自分类Dev

编写辅助方法时自动继承所有方法签名?(C#)

来自分类常见问题

为什么甚至可以更改私有成员或使用反射在C#中运行私有方法?

来自分类Dev

派生类可以访问作为内部类朋友的父类受保护内部类的私有方法吗?

来自分类Dev

派生类可以访问作为内部类朋友的父类受保护内部类的私有方法吗?

来自分类Dev

Objective-C类扩展与私有方法或变量

来自分类Dev

单元测试C#,并测试私有方法

来自分类Dev

类别访问主类的私有方法-目标C

来自分类Dev

私有方法的单元测试 c#

来自分类Dev

C ++继承中受保护的成员变量和私有成员变量

来自分类Dev

使用Minitest存根受保护的方法或私有方法

来自分类Dev

c#不一致的可访问性阻止将私有类作为受保护方法的参数

来自分类Dev

Objective-C:继承受保护/私有原子属性

来自分类常见问题

Python中私有和受保护方法的继承

来自分类Dev

ReSharper C#命名方法的私有方法和属性

来自分类Dev

C#:无法在私有方法中访问公共方法

来自分类Dev

如何在目标C中从超类重写私有方法和属性

来自分类Dev

如何在C ++中的Normal或Singleton类内GoogleTest私有方法/枚举类

来自分类Dev

如何在目标C中从超类重写私有方法和属性

来自分类Dev

C# 单元测试 - 检查是否达到了私有方法

来自分类Dev

如何在C#中隐藏基类的私有方法?

来自分类Dev

Java继承中的私有方法

来自分类Dev

Java继承中的私有方法

来自分类Dev

反思继承的私有方法

来自分类Dev

如何在测试方法中模拟受保护/私有方法?

来自分类Dev

C#6.0中的类可以具有受保护的主构造函数吗?

来自分类Dev

C ++中受朋友保护的方法

Related 相关文章

  1. 1

    私有方法与C ++中的Lambda

  2. 2

    C ++枚举类可以有方法吗?

  3. 3

    编写辅助方法时自动继承所有方法签名?(C#)

  4. 4

    编写辅助方法时自动继承所有方法签名?(C#)

  5. 5

    为什么甚至可以更改私有成员或使用反射在C#中运行私有方法?

  6. 6

    派生类可以访问作为内部类朋友的父类受保护内部类的私有方法吗?

  7. 7

    派生类可以访问作为内部类朋友的父类受保护内部类的私有方法吗?

  8. 8

    Objective-C类扩展与私有方法或变量

  9. 9

    单元测试C#,并测试私有方法

  10. 10

    类别访问主类的私有方法-目标C

  11. 11

    私有方法的单元测试 c#

  12. 12

    C ++继承中受保护的成员变量和私有成员变量

  13. 13

    使用Minitest存根受保护的方法或私有方法

  14. 14

    c#不一致的可访问性阻止将私有类作为受保护方法的参数

  15. 15

    Objective-C:继承受保护/私有原子属性

  16. 16

    Python中私有和受保护方法的继承

  17. 17

    ReSharper C#命名方法的私有方法和属性

  18. 18

    C#:无法在私有方法中访问公共方法

  19. 19

    如何在目标C中从超类重写私有方法和属性

  20. 20

    如何在C ++中的Normal或Singleton类内GoogleTest私有方法/枚举类

  21. 21

    如何在目标C中从超类重写私有方法和属性

  22. 22

    C# 单元测试 - 检查是否达到了私有方法

  23. 23

    如何在C#中隐藏基类的私有方法?

  24. 24

    Java继承中的私有方法

  25. 25

    Java继承中的私有方法

  26. 26

    反思继承的私有方法

  27. 27

    如何在测试方法中模拟受保护/私有方法?

  28. 28

    C#6.0中的类可以具有受保护的主构造函数吗?

  29. 29

    C ++中受朋友保护的方法

热门标签

归档