c++继承

1.继承可以减少写重复代码

继承语句:class 子类 : 继承方式 父类;其中,子类又叫派生类;父类又叫基类;
#include<iostream>
using namespace std;
class BasePage
{
	public:
		void header(){
			cout<<"首页、公共课、登录、注册...(公共头部)"<<endl;
		}
		void footer(){
			cout<<"帮助中心、交流合作、站内地图...(公共底部)"<<endl;
		}
		void left(){
			cout<<"Java,python,c++"<<endl;
		}
};
class Cpp : public BasePage
{
	public:
		void content(){
			cout<<"C++学科内容"<<endl;
		}
};
class Python : public BasePage
{
	public:
		void content(){
			cout<<"Python学科内容"<<endl;
		}
};
void test01(){
	cout<<"以下是c++的学科内容:"<<endl;
Cpp cpp;
	cpp.header();
	cpp.footer();
	cpp.left();
	cpp.content();
	cout<<"以下是python的学科内容:"<<endl;
	Python py;
	py.header();
	py.footer();
	py.left();
	py.content();
}
int main(){
	test01();
}

2.继承方式-公共继承/保护继承/私有继承

父类中private的东西,不管儿子的继承方式是(public/protected/private)中哪一个,子类都不可以访问;
若儿子的继承方式是public,则父亲的东西在儿子里面不变;
若儿子的继承方式是protected,则父亲的public/protected的东西在儿子这都变成了protected;
若儿子的继承方式是private,则父亲的所有都变成了private;
公共权限:类内类外都可以访问;
保护权限:类内可以访问,类外不可以访问;
私有权限:类内可以访问,类外不可以访问;

3.继承中的对象模型

父类中所有非静态成员的属性都会被子类继承下去;
父类中private成员儿子虽然不能访问,但确实是继承下去了;

4.构造和析构顺序

读取构造函数顺序:先父后子
读取析构函数顺序:先子后父

5.继承同名成员处理方式

访问子类:直接访问
访问父类同名成员:需加作用域
如果子类中出现和父类同名的成员函数,子类的同名成员会隐藏掉父类中所以同名成员函数;
如果想访问到父亲中被隐藏的同名成员函数,需要加作用域;
如:
Son s;
s.m_A;           //访问的是儿子的m_A;
s.Base::m_A; //访问的是父类的m_A;

6.继承中非静态同名成员处理方式

1.通过对象访问
Son s;
s.m_A;
s.Base::m_A;
2.通过类名访问
Son::m_A;
Base::m_A; 或  Son::Base::m_A;

7.多继承语法

c++中允许一个类继承多个类
class 子类 : 继承方式 父类1,继承方式 父类2
class Base1
{
	public:
		int m_A;
};
class Base2
{
	public:
		int m_A;
};
class Son : public Base1, public Base2
{
	public:
		Son(){
			m_C = 300;
			m_D = 400;
		}
};
int main(){
	Son s;
	cout<<"Base1的m_A : "<<s.Base1::m_A<<endl;  //同名必须加上作用域区分父类
	cout<<"Base2的m_A : "<<s.Base2::m_A<<endl;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值