加入收藏 | 设为首页 | 会员中心 | 我要投稿 大同站长网 (https://www.0352zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

C++虚函数访问权限的革新

发布时间:2021-11-19 17:47:26 所属栏目:教程 来源:互联网
导读:如果在基类中虚函数的访问权限是一种情况,那么派生类在继承基类的时候,派生类可以重新定义基类虚函数的访问权限,经过实例验证是正确的。 从这里也说明了函数的覆盖或者说重定义跟前面的访问权限修饰没多大关系 //Base.h #pragma once #include iostream u

如果在基类中虚函数的访问权限是一种情况,那么派生类在继承基类的时候,派生类可以重新定义基类虚函数的访问权限,经过实例验证是正确的。
 
从这里也说明了函数的覆盖或者说重定义跟前面的访问权限修饰没多大关系
 
//Base.h
 
#pragma once
#include <iostream>
using namespace std;
 
 
class Base
{
public:
 Base(void){}
 ~Base(void){}
 virtual void fun(){cout<<"This is Base::fun"<<endl;}
 virtual void func()=0;
};
 
//Son.h
 
#pragma once
#include "base.h"
class Son :public Base
{
public:
 Son(void){}
 ~Son(void){}
 virtual void fun(){cout<<"This is a son function"<<endl;}
protected:
 virtual void func(){cout<<"what a fuck day it is"<<endl;}
};
 
//T.h
 
#pragma once
#include "son.h"
class T :
 public Son
{
public:
 T(void){}
 ~T(void){}
 void xy()
 {
  Base *b = new Son();
  b->func();
 }
};
 
//main.cpp
 
#include "testInline.h"
#include "Son.h"
#include "T.h"
 
 
void main()
{
 Base* pB;
 Son* pS = new Son();
 pB = pS;
 pB->fun();
 
 
 T tst;
 tst.xy();
}
 
结果:
 
This is a son function
what a fuck day it is

(编辑:大同站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!