继承、多继承

//继承 父类(基类)+ 新内容 = 子类(派生类)
//子类继承父类,子类继承父类所有的成员变量和成员函数 父类有的子类都有,子类没有的可以加
//继承方式 控制父类成员在子类中的访问权限:public、private、protected 格式 calss 子类:权限 父类
//规则(继承方式:public):
// 父类私有成员,子类不可访问(继承了,但不可访问)
// 父类受保护成员,继承后依然为受保护成员,可以类中访问
// 父类公有成员,继承后依然为公有成员,类中可以访问,类外也可以访问
//结构体继承方式默认公有,类继承方式默认私有
//父类友元函数不会被继承
//父类的构造函数和析构函数可以被继承,但是不可直接用于子类中
//子类继承父类除了构造和析构之外的所有成员函数和成员变量(不能用而已)

//隐藏:假如父类成员/数据不符合要求,需要重新写一个函数或者变量 在子类中写一个函数覆盖父类(重新父类函数,函数名和参数都一样,不会构成重载),调用时调用的为子类重写的函数,不再是父类函数

//子类的新成员变量、新成员函数:与父类无关系

//关于构造和析构,子类构造必须先调用父类的构造(使用参数列表)父类(x,y,z…)
// 子类的析构自动先调用 ,后调用父类的析构

//多继承:一个子类继承多个父类(会继承所有父类的所有成员) calss 子类:权限 父类1,权限 父类2…
// 关于构造:调用所有父类的构造(调用顺序和继承顺序有关,先父类再子类)
// 关于成员:父类中有同名成员变量,使用:类::变量名 区分
// (一般重名,需要隐藏掉)
//继承方式权限大小排名:public–>protected–>private

class A
{
protected://采用受保护权限,指明派生类可对成员变量进行访问,而类外不可访问
	int data;
	string name;
public:
	A() :data(0), name(nullptr){}
	A(int _data, string _name)
	{
		this->data = _data;
		this->name = _name;
	}
	~A(){}
	void show()const
	{
		cout << "ID:" << data << " Name:" << name << endl;
	}
};


class B :public A
{
private:
	int age;
public:
	B() :age(0){}
	B(int _age,int _data,string _name) :A(_data, _name)
	{
		this->age = _age;
	}
	void show()const
	{
		cout << "ID:" << data << " Name:" << name << " Age:" << age << endl;
	}
};


int main()
{
	A a(1, "何");
	a.show();
	B b(20, 2, "傻子");
	b.show();
	cin.get();
	return 0;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值