后三章知识梳理

第8章 运算符重载
1.基本概念
定义:将运算符看作是一种特殊的函数:操作数是函数的参数,运算结果是函数的返回值
函数名由关键字operator 和其后要定义的运算符组成
通常声明为类的友元,以便访问私有数据成员
赋值(=)、下标([])、函数调用(())和成员函数访问箭头(->)运算符必须是成员函数
可以重载的运算符在这里插入图片描述
2.常用运算符的重载
①一元运算符前缀和后缀形式都会改变对象,不能对常量对象操作
前缀形式返回改变后的对象,后缀形式返回改变之前的值
后缀形式的自增和自减比前缀形式多一个int参数,这个参数在函数中并不使用,只是作为重载函数的标记来区分前缀和后缀运算
重载自增和自减运算符时应同时定义前缀和后缀形式
②二元运算符
赋值运算符只能用成员函数重载
复合赋值运算符可以用成员或非成员重载
③输入输出运算符的函数原型

istream& operator>>(istream&, type&);
ostream& operator<<(ostream&, const type&);

3.重载下标运算符
一个是非const 成员函数并返回引用
另一个是const 成员函数并返回const 引用或值
5.函数调用运算符
如果类重载了函数调用运算符operator(),就可以像使用函数一样使用该类的对象。
如果一个类定义了函数调用运算符,那么该类的对象称为函数对象,或者仿函数。
函数对象类除了operator()之外还可以包含其他成员

第9章 组合与继承
1.组合
定义:将一个类的对象作为另一个类的成员,被称作组合或包含。对象成员的初始化:
创建包含对象成员的组合对象时,会执行成员类的构造函数初始化对象成员
成员初始化的次序和成员声明的次序相同,并不考虑它们在初始化列表中的排列顺序当
组合对象被撤销时,会执行其析构函数,成员对象的析构函数也会被执行
析构函数的执行次序和构造函数相反
2.继承
定义:在已有类的基础上创建新类的过程。
被继承的已有类称为基类
继承得到的新类称为派生类
派生类可以再被继承,这样构成的层次结构称为继承层次
类继承关系的语法形式
class 派生类名 : 基类名表
{
数据成员和成员函数声明
};

派生类的生成过程经历了三个步骤
●吸收基类成员(全部吸收(构造、析构除外),但不一定可见)
●改造基类成员
●添加派生类新成员
3.重名成员
派生类定义了与基类同名的成员,在派生类中访问同名成员时屏蔽了基类的同名成员。
在派生类中使用基类的同名成员,显式地使用类名限定符:
类名 :: 成员
派生类中访问静态成员,用以下形式显式说明:
类名 :: 成员

对象名 . 成员
派生类构造函数声明为
派生类构造函数 ( 变元表 ) : 基类 ( 变元表 ) , 对象成员1( 变元表 )
… 对象成员n ( 变元表 ) ;

构造函数执行顺序:基类 对象成员 派生类
4. 派生类构造函数和析构函数的定义规则
派生类构造函数和析构函数的使用原则
基类的构造函数和析构函数不能被继承
如果基类没有定义构造函数或有无参的构造函数, 派生类也可以不用定义构造函数
如果基类无无参的构造函数,派生类必须定义构造函数
如果派生类的基类也是派生类,则每个派生类只负责直接基类的构造
派生类是否定义析构函数与所属的基类无关
在C++中,派生类构造函数的一般格式为:
派生类::派生类名(参数总表):基类名(参数表)
{
// 派生类新增成员的初始化语句
}
注意:这是基类有构造函数且含有参数时使用

5.多继承
一个类有多个直接基类的继承关系称为多继承
多继承声明语法
class 派生类名:访问控制 基类名1 , 访问控制 基类名2 , … , 访问控制 基类名n
{
数据成员和成员函数声明
};
多继承的构造函数
派生类名(参数总表):基类名1(参数表1),基类名2(参数表2),…,基类名n(参数表n)
{
// 派生类新增成员的初始化语句
}

第10章 虚函数与多态
1.多态性:指一个名字,多种语义;或界面相同,多种实现。
虚函数:冠以关键字 virtual 的成员函数。
重载函数是多态性的一种简单形式。
虚函数允许函数调用与函数体的联系在运行时才进行,称为动态联编
实现运行时多态的关键首先是要说明虚函数,另外,必须用基类指针调用派生类的不同实现版本
注意
①一个虚函数,在派生类层界面相同的重载函数都保持虚特性。一个虚函数无论被继承多少次,保持其虚函数特性。
②虚函数必须是类的成员函数
③虚函数可以是另一个类的友元
④析构函数可以是虚函数,但构造函数、内联成员函数、静态成员函数不能是虚函数。
⑤在派生类中重载基类的虚函数要求函数名、返回类型、参数个数、参数类型和顺序完全相同
⑥派生类应该从它的基类公有派生。
⑦必须首先在基类中定义虚函数。
⑧派生类对基类中声明虚函数重新定义时,关键字virtual可以不写。
⑨一般通过基类指针访问虚函数时才能体现多态性。
2.纯虚函数
纯虚函数是一个在基类中说明的虚函数,在基类中没有定义, 要求任何派生类都定义自己的版本。
纯虚函数说明形式:
virtual 类型 函数名(参数表)= 0 ;
一个具有纯虚函数的基类称为抽象类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值