• c++ 多态


    示例代码对以下两种情况进行了说明:

    1. 继承时改变虚函数的权限;

    2. 私有继承;

    class A 
    {
    public:
        virtual void test1() {
            cout << "public test1 of A" << endl;
        }
    private:
        virtual void test2() {
            cout << "private test2 of A" << endl;
        }
    protected:
        int p1;
    private:
        int p2;
    };
    
    class B: public A
    {
    private:
        void test1() {
            cout << "privte test1 of B" << endl;
        }
    public:
        void test2() {
            cout << "public test2 of B" << endl;
        }
    
    };
    
    class C: private A
    {
    public:
        void testProtected() {
            cout << p1 << endl;
        }
    };
    
    class D: public C
    {
    public:
        void testProtected() {
            // cout << p1 << endl;//因为c私有继承A,c不能访问a的protedted成员
        }
    };
    
    int main()  {
        B b;
        A* a = &b;
    
        a->test1();//可以访问, 权限以A为准
        // a->test2();//无法访问私有成员
    
        C c;
       c.testProtected(); 
    return 0;
    }

      

  • 相关阅读:
    nginx 转发配置
    Rancher中httpd证书的管理和使用
    JDK-docker
    软路由
    rancher相关
    rancher部署
    电商 好文 知识积累
    SpringBlade 接口文档 请求token接口报错
    SpringBlade 接口文档 无法访问
    电商 好文
  • 原文地址:https://www.cnblogs.com/simonote/p/6034911.html
Copyright © 2020-2023  润新知