类与类之关系

本文深入探讨了C++中类继承的概念,包括如何通过继承实现数据成员和成员函数的复用,以及如何利用虚函数实现多态性。详细解释了公有、私有和保护继承的区别,以及静态绑定与后期绑定的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了便于说明,在这里我摘找了两个类的定义如下:

Sphere类作为基类

class Sphere //define a sphere class for base class { public: Sphere(); Sphere(double initialRadius); //copy constructor and destructor supplied //by the complier void setRadius(double newRadius); double getRadius()const; double getArea()const; void display()const; private: double radius; };


Ball为其派生类Ball为其派生类

class Ball :public Sphere { Ball(); Ball(double initialRadius); //creates a ball with radius initialRadius and //name initialName //copy constructor and destructor supplied //bye the complier //additional or revised operator: void getName(string ¤tName)const; //get a ball's current name void setName(string &newName); //set the name of an existing ball void resetBall(double newRadius,string &newname); void display()const; private: string thename; };


1、派生类的实例继承包含继承数据成员的副本,但所继承成员函数的代码并没有复制过来。虽然派生类继承了基类,但不能访问基类的私有成员。继承并不意味着访问。可继承一个封闭的数据单元,却打不开它。在本例中Sphere的数据成员theRadius 是私有的,故只能在Sphere的定义中使用,但不能在Ball的定义中引用。但可以通过Sphere的公用成员函数访问。

2、公有,私有和保护继承:可以进行几种类型的继承,无论使用哪一种继承方式,派生类都可以使用基类的所用公有和受保护成员,但不能访问其私有成员。公有继承:基类的公有成员和受保护成员依然分别为派生类的公有成员和受保护成员。私有继承:基类的公有成员和受保护成员成为派生类的私有成员受保护继承:积累的公有成员和受保护成员成为派生类的受保护成员。在所有的继承类别中,基类的私有成员都保留为基类的私有成员,派生类不能访问他们。

3、静态绑定:执行成员函数的哪个版本是根据对象声明时采用的类型在编译期间确定的。
后期绑定:执行成员函数的哪个版本是根据对象的类型在执行期间确定的,而不是在编译期间确定的。

4、虚函数的要点:

1)虚函数是派生类可以重写的函数
2)必须实现类的虚函数(纯虚函数没有这个要求)
3)派生类不需要重写所继承基类的已有实现代码
4)一般情况下,类的成员函数应是虚函数,除非不希望派生类重写他们。
5)构造函数不是虚函数。
6)析构函数可以是虚函数,也应是虚函数。虚函数确保对象将来的子对象可以正确的解除内存它们自己的内存分配。
7)虚函数的返回类型不能重写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值