zoukankan      html  css  js  c++  java
  • C++继承后的函数访问权限

        今天在写代码时发现对继承后的函数访问权限不太清楚,于是自己做了个测试:

    1.头文件(test.h) 

     1 #include <iostream> 
    2 using namespace std;

    3
    4 class A{ 5 private: 6 void print(){ 7 cout << "this is A" << endl; 8 } 9 }; 10 11 class B:public A{
    };

        A为基类,B为A的子类.

    2.源文件(test.cpp)

     1 #include "test.h"
     2 
     3 void main()
     4 {
     5     B* pB = new B();
     6     pB->print();
     7 
     8     getchar();
     9     getchar();
    10 }

        因为B从A类继承了函数print并且同时继承了print的访问权限,所以此时编译不通过.

    3.修改后的头文件(test.h)

     1 #include <iostream>
     2 using namespace std;
     3 
     4 class A{
     5 private:
     6     void print(){
     7         cout << "this is A" << endl;
     8     }
     9 };
    10 
    11 class B:public A{
    12 public:
    13     void print(){
    14         cout << "this is B" << endl;
    15     }
    16 };

        子类B重写了A的print函数,此时编译成功,运行如下:

    4.总结

        当一个类从另一个类继承后,基类成员函数的访问权限为默认的继承权限,若子类自己重写了此函数,则访问权限变更为子类设置的访问权限.简言之,子类设置的函数访问权限优先于从基类继承后语法默认的访问权限.

  • 相关阅读:
    NOI2005 维护数列(splay)
    傻子代码行列式
    Matrix-tree定理 spoj HIGH
    Boruvka算法求最小生成树
    Codeforces 521 E cycling city
    欧拉回路 uoj117
    BZOJ1146: [CTSC2008]网络管理Network
    我的OI生涯番外篇
    主席树+dfs SPOJ BZOJ2588 Count on a tree
    动态主席树 优化版
  • 原文地址:https://www.cnblogs.com/blueoverflow/p/4707607.html
Copyright © 2011-2022 走看看