知识点总结

组合与继承
1.组合(包含):(复用类的实现)
将一个类的对象作为另一个类的成员
对象成员的初始化:
创建包含对象成员的组合对象时,会执行成员类的构造函数初始化对象成员,要注意,成员初始化的次序和成员声明的次序相同
当组合对象被撤销时,会执行其析构函数,成员对象的析构函数也会被执行
复用类的实现:应用组合,重新包装一个类对象,使之用于特定的环境
2.继承:(复用类的接口)
在已有类的基础上创建新类的过程
被继承的已有类称为基类;
继承得到的新类称为派生类;
派生类可以再被继承,这样构成的层次结构称为继承层次
继承类包含了多个代码的重复部分,为了避免重复代码多次书写将重复部分提出单独写一个类,用需要这部分功能的类去继承。六、组合与继承
1.组合(包含):(复用类的实现)
将一个类的对象作为另一个类的成员
对象成员的初始化:
创建包含对象成员的组合对象时,会执行成员类的构造函数初始化对象成员,要注意,成员初始化的次序和成员声明的次序相同
当组合对象被撤销时,会执行其析构函数,成员对象的析构函数也会被执行
复用类的实现:应用组合,重新包装一个类对象,使之用于特定的环境
2.继承:(复用类的接口)
在已有类的基础上创建新类的过程
被继承的已有类称为基类;
继承得到的新类称为派生类;
派生类可以再被继承,这样构成的层次结构称为继承层次
继承类包含了多个代码的重复部分,为了避免重复代码多次书写将重复部分提出单独写一个类,用需要这部分功能的类去继承。
运算符重载
1.运算符重载:将运算符看作是一种特殊的函数,操作数是函数的参数,运算结果是函数的返回值
函数名由关键字operator 和其后要定义的运算符组成
operator=, operator<<, operator+
通常声明为类的友元,以便访问私有数据成员
赋值(=)、下标([])、函数调用(())和成员函数访问箭头(->)运算符必须是成员函数
2.一元运算符:
前缀和后缀形式都会改变对象,不能对常量对象操作
前缀形式返回改变后的对象,后缀形式返回改变之前的值
后缀形式的自增和自减比前缀形式多一个int参数,这个参数在函数中并不使用,只是作为重载函数的标记来区分前缀和后缀运算
重载自增和自减运算符时应同时定义前缀和后缀形式
3.二元运算符:
赋值运算符:赋值运算符只能用成员函数重载;复合赋值运算符可以用成员或非成员重载
(当运算符函数是成员函数时,若它是一元运算符函数则无需提供参数,类本身成员为参数,若为二元运算符,则需要提供一个参数作为右参数,类本身成员是左参数。
4、运算符函数调用
x operator+(const x&left,const x&right){…}
x data1,data2;
data1+data2;//表达式中的调用
operator+(data1,data2);//等价的直接函数调用
data1.operator+(data2);//成员函数调用
5、不能重载的运算符
作用域解析符::
成员选择符.
成员指针间接引用符.*
条件运算符?:
逻辑与&&
逻辑或‖
逗号,
取地址符&
6、可以重载的运算符
一元运算符+ - * ++ –
算数运算符+ - % /
关系运算符 == != > <
位运算 << >>
赋值运算 = += -= /=
其他运算符 {} []
7、重载输入输出
再类里用友元声明函数,类外定义
友元声明:
friend istream& operator>>(istream&in,类名&变量名);
friend ostream&operator<<(ostream&out,类名&变量名);
类外定义
istream &operator>>(istream&in,类名&变量名)
{
in>>…
teturn in;
}
ostream&operator<<(ostream&out,类名&变量名)
{
out<<…
return out;
}
第9章 组合与继承
1、组合,简单来说就是在一个类里套另一个类,平常打代码时,多是一个操作类里含有数据类,数据类在操作类里用vector存。
2、在c++中,被继承的已有类称为基类,继承得到的新类称为派生类。派生类可以再被继承,这样构成的层次结构称为继承层次。
3、继承的语法形式如下:
class 派生类名字 : 访问限定符 基类名字
{
成员声明;
};
4、访问限定符
public 公有
private 私有
protected 保护
5、如果不指定,对class关键字定义的类,默认为private;如果是struct关键字定义的类,则默认为public。
6、一个派生类继承一个基类后,基类中的成员,不需要在派生类中重复声明,将会在派生类中直接继承,如果在派生类中重复声明一个基类的函数,则表示派生类中要重新实现这个操作
7、无论访问限定符是公有、私有、保护,都不能继承基类中私有成员,不能调用私有成员,可以用get、set函数间接调用
8、派生类继承基类,不继承私有成员和析构函数、构造函数。
9、多重继承
class 派生类名字 : 访问限定符1 基类名字1,访问限定符2 基类名字2,访问限定符3 基类名字3,…
{
成员声明;
}
10、在派生类中写一个和基类中函数名相同,参数类型相同,参数个数相同,返回值类型相同的函数,叫做覆盖。
如果写一个函数名相同,参数不同,叫做重载。
11、如果用一个基类的指针指向派生类,调用派生类中的覆盖函数,则出现的结果等于基类中这个函数的结果。

        第10章         虚函数与多态性

1.多态性:是指一个名字,多种语义;或界面相同,多种实现。
虚函数:有virtual 关键字的成员函数称为虚函数
实现运行时多态的关键首先是要说明虚函数,另外,必须用
基类指针调用派生类的不同实现版本
2.注意:
一个虚函数,在派生类层界面相同的重载函数都保持虚特性
虚函数必须是类的成员函数
虚函数可以是另一个类的友元
析构函数可以是虚函数,但构造函数不能是虚函数
在派生类中重载基类的虚函数要求函数名、返回类型、参数个数、参数类型和顺序完全相同
派生类应该从它的基类公有派生
必须首先在基类中定义虚函数
一般通过基类指针访问虚函数时才能体现多态性
一个虚函数无论被继承多少次,保持其虚函数特性
虚函数必是其所在类的成员函数,而不能是友元函数,也不能是静态函数
构造函数、内联成员函数、静态成员函数不能是虚函数
析构函数可以是虚函数,通常声明为虚函数
3.纯虚函数:只有函数名没有函数体

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值