c++第8、9、10章总结

              第8章    运算符重载

1、operator后紧跟要重载的运算符,例如重载“+"运算符函数名字为operator+
2、一个运算符被重载以后,它原先的含义不会改变,扔可以用。使用时系统会判断用这个运算符的重载还是原含义。
即: 运算符重载不会改变内置类型表达式中的运算符含义,只有在至少一个操作数是用户自定义类型对象时,才有可能调用该类中重载的运算符。
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
vittual 返回类型 成员函数名(参数表);
2、virtual只能在类内的成员函数声明之前,不能用于类外的函数定义,除了构造函数外,任何非静态成员函数都可以是虚函数。
3、派生类中可以重定义基类的虚函数,这称为覆盖,在派生类中覆盖基类虚函数要求返回类型、函数名、参数个数、参数顺序都一样才行。
4、有了虚函数后,用基类的指针指向派生类,调用派生类中覆盖的基类虚函数的函数,得到的结果,不再是基类中虚函数的结果,而是派生类中此函数的结果,这也被称为多态。
5、可用override来标记派生类中的虚函数,使得编译器可以检测出,对虚函数覆盖还是重载的错误。
使用方法 在基类中虚函数无作为
在派生类中的此函数声明后加上override
例:
struct b
{
virtual void f1() const;
};
struct d:b{
void f1()const override;
};
6、虚函数实现多态的步骤:
在基类中讲需要多态调用的成员函数声明为virtual
在派生类中覆盖基类的虚函数,实现各自需要的功能
用基类的指针或引用指向派生类对象,通过基类指针或引用调用虚函数。
7、基类中定义虚函数,派生类中覆盖虚函数
这样调用时才能用派生类中的函数
8、基类的析构函数可被派生类覆盖,但是不用再派生类中写一个同名的析构函数。派生类中的此析构函数还是派生类的名字,不是基类析构函数的名字。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值