c++的类派生继承(三)

下列是继承方法详解
class A{
}
class B:A{ //此方法是默认的继承方法 私有继承 class B:private A
}
struct C:A{ // 用struct 定义一个派生类 如果没指名方法 默认的是 struct C:public A
}
private // 私有继承 不管采用哪种继承方式,基类私有成员 在派生类中都是不可访问的
protected:成员
// 如果是 private 继承的方式,则在派生类中是private 成员
// 如果是protected继承方式,则在派生类中是protected 成员
// 如果是public 继承方式,则在派生类中是 protected 成员
public:成员
// 如果是 private 继承的方式,则在派生类中是private 成员
// 如果是protected继承方式,则在派生类中是protected 成员
// 如果是public 继承方式,则在派生类中是 public 成员
// 如前所述,类的public 成员可以被外界访问,而protected 成员只能被该类以及其 派生类的成员函数或友元访问
// private 成员只能被该类自己的成员访问或 友元访问。
//多态继承
class D:public A,private B,protected C{
}

关于构造函数隐式转换可以看我的这一篇添加链接描述

#include <iostream>
using namespace std;
class Base{		//自定义基类
public:
	Base() = default;
	void show1(){ cout << "基类公共show"<<endl;}
	int a;
protected:
	void show2(){ cout << "基类保护成员show" << endl; }
	int b;
private:
	void show3(){ cout << "私有基类show" << endl; }
	int c;
};

class Box:public Base{ // 继承Base  可以在外部直接用Box对象来访问基类的公共成员函数 受保护的只能在类里面用
public:
	Box() = default;  // 如果派生类跟基类的类名重名 也会影藏基类
	void show1(){ 
	Base::show1(); // 调用基类的show1()
	cout << "BOX类类公共show" << endl; } //如果成员或者函数跟基类重名 那么会影藏基类的成员函数如果想访问用 Base::show1();
			//同名即便参数不同也会影藏基类函数    可以用重载函数的方法将基类函数赋过来
protected:
	void show2(){ cout << "BOX类保护成员show" << endl; }
	int b=Base::b; //将基类成员赋给派生类
private:
	void show3(){ cout << "BOX类私有基类show" << endl; }
	//int c= Base::c;  私有的不能访问只有基类能访问 只有本类能访问
};

int main(){
	Box A;
	A.show1(); // 调用派生类的show1 但是派生类里面 Base::show1() 所以也访问了基类的show1()
	while (true);
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值