继承与多态(一)

在学习C++的过程中,继承和多态是所有人都绕不过的一个重头戏。这篇博客探讨的都是VS2013下,32位编译系统所产生的结果

目录

继承

基类和派生类的赋值转换

继承中的作用域

派生类的默认成员函数

菱形继承和菱形虚拟继承


一、继承

1、概念

继承(inheritance)这一种机制是面向对象程序设计中,可以使代码复用的一种最重要手段。它可以使程序在保持原有类特性的基础上进行扩展,增加一些其他的功能。在继承中产生的类,我们称为派生类。

例如:对于集成来说,我们可以这样理解。简单的一句话,在现有的基础之上进行开发。就像智能手机,例如小米4,小米5,甚至于iPhone,还有电脑等。它们的每一代都是继承了上一代版本的各种优势,以及较为成熟的一些设计。总不可能,你每一次的产品推出都要从头开始设计,所有的程序,功能,框架都要从头设计?这样做的效率就会十分的低。所以c++产生了这一种机制,从而更快的提高程序员的开发效率。

2、作用

继承的主要作用,本就是实现代码的复用性。在生活中我们会遇见很多这样的情况——重复劳动。就好比三个计算器,都只能实现一类数据的加法。那既然都是加法为什么需要三个计算器呢?因此,就产生了多态的定义。而继承最主要的作用就是实现多态。

3、实现方式

class  派生类名 :继承权限  基类名;
 

class Base
{
public:
	void SetBase(int pri, int pro, int pub)
	{
		_pri = pri;
		_pro = pro;
		_pub = pub;
	}

	void PrintBase()
	{
		cout << _pri << endl;
		cout << _pro << endl;
		cout << _pub << endl;
	}

private:
	int _pri;
protected:
	int _pro;
public:
	int _pub;
};

class Derived : public Base
{};

int main()
{
	// 可以验证:派生类将基类中的成员变量继承到子类中
	cout << sizeof(Derived) << endl;//12

	// 验证:基类中的成员函数释放被子类继承
	Derived d;
	d.SetBase(10, 20, 30);
	d.PrintBase();
	return 0;
}

4、继承权限

继承权限顾名思义,使用什么权限对基类中的成员进行继承

// public继承方式:

class Base
{
public:
	void SetBase(int pri, int pro, int pub)
	{
		_pri = pri;
		_pro = pro;
		_pub = pub;
	}

	void PrintBase()
	{
		cout << _pri << endl;
		cout << _pro << endl;
		cout << _pub << endl;
	}

private:
	int _pri;
protected:
	int _pro;
public:
	int _pub;
};

// 继承权限--public
// 基类中public/protected的成员在子类中权限不变
// 基类中private的成员在子类中不可见(但已被继承)
// 访问权限:限定该成员变量是否可以直接在类外进行调用
class Derived : public Base
{
public:
	void SetDerived(int priD, int proD, int pubD)
	{
		_priD = priD;
		_proD = proD;
		_pubD = pubD;

		_pro = 10;//基类中共有的成员变量在派生类中可以被访问
		// _pri = 20; // 在派生类中不能访问基类中private的成员变量
	}

publi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值