首页 > 编程语言 > 详细

C++继承后的虚函数访问权限

时间:2015-08-06 13:06:46      阅读:397      评论:0      收藏:0      [点我收藏+]

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

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.总结

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

 

C++继承后的虚函数访问权限

原文:http://www.cnblogs.com/blueoverflow/p/4707607.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!