zoukankan      html  css  js  c++  java
  • C++虚函数继承的bug

      闲来无事想测试一下:如果在派生类中重写基类的虚函数,那么允不允许改变虚函数的访问权限,结果颠覆了三观。。。。。

      基类Base,拥有public方法test(),test()为虚函数

      派生类Derived重写test(),并将访问权限改为private

      代码如下:

    #include<iostream>
    using namespace std;
    
    class Base
    {
    public:
         void  Access()
         {
             test();
         }
    public:
        virtual void test()
        {
            cout<<"test in Base"<<endl;
        }
    };
    
    class Derived: public Base
    {
    private:
        void test()
        {
            cout<<"test in Derived"<<endl;
        }
    };
    
    int main()
    {
        Base* pBs = new Derived();
        pBs->test();
    }

      本以为会通不过编译阶段,但是代码可以正常运行,且输出结果:

      

      这就相当于Derived类对test()的private控制完全没有用啊。。。。。

  • 相关阅读:
    html中的浮动
    Html中元素的分类
    前端标签命名规范
    meta详解
    CSS的嵌套方法
    html标签
    W3C标准
    AE待整理
    AE小知识点备忘录
    Maximum Subarray
  • 原文地址:https://www.cnblogs.com/canger/p/6277850.html
Copyright © 2011-2022 走看看