-
2014-11-09
我们知道,如果一个派生类有多个直接基类,而这些直接基类又有一个共同的基类,则在最终的派生类中会保留该间接共同基类数据成员的多份同名成员。在引用这些同名的成员时,必...
-
2014-11-09
多重继承可以反映现实生活中的情况,能够有效地处理一些较复杂的问题,使编写程序具有灵活性,但是多重继承也引起了一些值得注意的问题,它增加了程序的复杂度,使 程序的编写...
-
2014-11-07
前面讨论的是单继承,即一个类是从一个基类派生而来的。实际上,常常有这样的情况:一个派生类有两个或多个基类,派生类从两个或多个基类中继承所需的属性。C++为了适应这种情...
-
2014-11-07
析构函数的作用是在对象撤销之前,进行必要的清理工作。当对象被删除时,系统会自动调用析构函数。析构函数比构造函数简单,没有类型,也没有参数。 在派生时,派生类是不能继...
-
2014-11-07
在使用派生类构造函数时,有以下特殊的形式。 1)当不需要对派生类新增的成员进行任何初始化操作时,派生类构造函数的函数体可以为空,即构造函数是空函数,如例11.6(具体代码请...
-
2014-11-07
一个类不仅可以派生出一个派生类,派生类还可以继续派生,形成派生的层次结构。在上面叙述的基础上,不难写出在多级派生情况下派生类的构造函数。 通过例下面的程序,读者可以...
-
2014-11-07
类的数据成员不但可以是标准型(如int、char)或系统提供的类型(如string),还可以包含类对象,如可以在声明一个类时包含这样的数据成员: Student s1; //Student是已声明的类名,s1是...
-
2014-11-07
用户在声明类时可以不定义构造函数,系统会自动设置一个默认的构造函数,在定义类对象时会自动调用这个默认的构造函数。这个构造函数实际上是一个空函数,不执行任何操作。如...
-
2014-11-07
在实际项目开发中,经常会有多级派生的情况。如图11.9所示的派生关系:类A为基类,类B是类A 的派生类,类C是类B的派生类,则类C也是类A的派生类;类B称为类A 的直接派生类,类C称为...
-
2014-11-06
protected 与 public 和 private 一样是用来声明成员的访问权限的。 由protected声明的成员称为受保护的成员,或简称保护成员。从类的用户角度来看,保护成员等价于私有成员。但有一点与私...
-
2014-11-06
在声明一个派生类时将基类的继承方式指定为private的,称为私有继承,用私有继承方式建立的派生类称为私有派生类(private derived class ), 其基类称为私有基类(private base class )。 私有基...
-
2014-11-06
在定义一个派生类时将基类的继承方式指定为public的,称为公用继承,用公用继承方式建立的派生类称为公用派生类(public derived class ),其基类称为公用基类(public base class )。 采用公用...
-
2014-11-06
既然派生类中包含基类成员和派生类自己增加的成员,就产生了这两部分成员的关系和访问属性的问题。在建立派生类的时候,并不是简单地把基类的私有成员直接作为派生类的私有成...
-
2014-11-06
派生类中的成员包括从基类继承过来的成员和自己增加的成员两大部分。从基类继承的成员体现了派生类从基类继承而获得的共性,而新增加的成员体现了派生类的个性。正是这些新增...
-
2014-11-06
先通过一个例子来说明怎样通过继承来创建派生类,先从最简单的单继承开始。 假设已经声明了一个基类Student(基类Student的定义见上节:C++继承与派生的概念),在此基础上通过单继...
-
2014-11-06
在C++中可重用性是通过 继承(inheritance) 这一机制来实现的。因此,继承是C++的一个重要组成部分。 前面介绍了类,一个类中包含了若干数据成员和成员函数。在不同的类中,数据成员和...
-
2014-11-05
用转换构造函数可以将一个指定类型的数据转换为类的对象。但是不能反过来将一个类的对象转换为一个其他类型的数据(例如将一个Complex类对象转换成double类型数据)。 C++提供类型转换...
-
2014-11-05
标准数据类型之间的转换 在C++中,某些不同类型数据之间可以自动转换,例如 int i = 6; i = 7.5 + i; 编译系统对 7.5是作为double型数处理的,在求解表达式时,先将6转换成double型,然后与...
-
2014-11-05
C++的流插入运算符和流提取运算符是C++在类库中提供的,所有C++编译系统都在类库中提供输入流类 istream和输出流类ostream。cin和cout分别是istream类和ostream类的对象。在类库提供的头文件...
-
2014-11-05
双目运算符(或称二元运算符)是C++中最常用的运算符。双目运算符有两个操作数,通常在运算符的左右两侧,如3+5,a=b,i10等。在重载双目运算符时,不言而喻在函数中应该有两个参数。...
-
2014-11-05
例10.2中对运算符+进行了重载,使之能用于两个复数的相加。在该例中运算符重载函数operator+作为Complex类中的成员函数。 可能有的读者会提出这样的问题:+是双目运算符,为什么在例...
-
2014-11-05
C++中绝大部分的运算符允许重载,具体规定见表10.1。 表10.1 C++允许重载的运算符 双目算术运算符 + (加),-(减),*(乘),/(除),%(取模) 关系运算符 ==(等于),!= (不等于), (小于), (大于,...
-
2014-11-01
C++对运算符重载定义了如下几条规则。 1) C++不允许用户自己定义新的运算符,只能对已有的C++运算符进行重载。 例如,有人觉得BASIC中用**作为幂运算符很方便,也想在C++中将**定义为...
-
2014-11-01
运算符重载的方法是定义一个重载运算符的函数,在需要执行被重载的运算符时,系统就自动调用该函数,以实现相应的运算。也就是说,运算符重载是通过定义函数实现的。运算符重...
-
2014-11-01
所谓重载,就是重新赋予新的含义。 函数重载就是对一个已有的函数赋予新的含义,使之实现新功能,因此,一个函数名就可以用来代表不同功能的函数,也就是一名多用。 运算符也...