zoukankan      html  css  js  c++  java
  • 记C++类成员访问权限符二三事

    1、对于虚拟函数,子类里的成员访问权限符可以和父类不同。即对于基类的函数func如果是public的,子类中它可以是private的。

    class Base  
    {
    public:
    	Base();
    	virtual ~Base();
    
    public:
    	virtual void func(void); // 公有
    
    };
    
    class Derived : public Base  
    {
    public:
    	Derived();
    	virtual ~Derived();
    
    private:
    	void func(void);  // 私有,和父类不同
    
    };
    
    	Base * pB = new Base();
    	pB->func();
    
    	pB = new Derived();
    	pB->func();       // 正常访问
    
    	Derived * pD = new Derived();
    //	pD->func();  不能访问


    2、“存取限制”不能解除“因多继承而得的members”的模棱两可的状态。原因:改变某个class member的可存取性,绝不应该连带改变程序的意义。

    class Base1 {
    public:
        int doIt();
    };
    
    class Base2 {
    private:
        int doIt(); // 不管这里是public,protected还是private,都会产生模棱两可
    }
    
    class Derived: public Base1, public Base2 {
    }
    
    Derived d;
    int i = d.doIt(); // 错误,模棱两可


  • 相关阅读:
    C# 文件重命名
    C# 获取图像文件
    我开通了博客
    C# 图像截取
    C# 从txt读取内容
    Linux 下查看用户组信息
    部署Jenkins完整记录
    一篇文章搞定Java注解^_^
    Java基础之接口
    枚举让盗版美国总统wcc给你整明白哈哈
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3053849.html
Copyright © 2011-2022 走看看