C复习资料整理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、引用是别名

int i,j;

int &ri=i; 员运算符

*成员指针运算符

::作用域操作符

?:三目运算符

sizeof()

⏹不可以改变运算符操作数的数目

⏹运算符的优先级不可以改

使用友元函数重载运算符

⏹通常比用成员函数重载多一个参数

⏹但是有些运算符不能用友元函数重载

⏹=赋值运算符

⏹[]数组下标运算符

⏹()函数调用运算符

⏹new内存分配运算符

⏹Delete内存删除运算符

赋值运算符的重载

⏹对于类中含有指针数据成员的类,常常需要重载=号运算符

⏹只能利用成员函数重载,不能用友元重载

⏹重载的赋值运算符不能被继承

⏹不能将赋值运算符重载函数声明为虚函数

14、①基类与派生类的构造函数

基类的构造函数不被继承,需要在派生类中自行声明。

派生类的对象时,将自动执行基类与派生类的构造函数

基类的构造函数在派生类构造函数之前执行

传递参数

可以通过派生类构造函数显式调用基类的构造函数,从而为基类构造函数传递参数

②基类与派生类的析构函数

执行顺序

调用析构函数的过程与构造函数相反

首先执行派生类的析构函数,然后执行基类的析构函数

15、基类与派生类的名字冲突

同名覆盖原则与基类中有相同成员时:

若未强行指名,则通过派生类对象使用的是派生类中的同名成员。

如要通过派生类对象访问基类中被覆盖的同名成员,应使用基类名限定。

16、继承派生复制兼容问题

一个公有派生类的对象在使用上可以被当作基类的对象,反之则禁止。具体表现在:派生类的对象可以被赋值给基类对象。

派生类的对象可以初始化基类的引用。

指向基类的指针也可以指向派生类。

17、虚函数的作用

虚函数同派生类的结合可使C++支持运行时的多态性,实现了在基类定义派生类所拥有的通用接口,而在派生类定义具体的实现方法,即常说的“同一接口,多种方法”,它帮助程序员处理越来越复杂的程序。

虚函数与重载函数的关系

在一个派生类中重新定义基类的虚函数是函数重载的另一种形式,但它不同于一般的函数重载。

◆普通的函数重载时,其函数的参数或参数类型必须有所不同,函数的返回类型也可以不同。

◆当重载一个虚函数时,也就是说在派生类中重新定义虚函数时,要求函数名、返回类型、参数个数、参数的类型和顺序与基类中的虚函数原型完全相同。

◆如果仅仅返回类型不同,其余均相同,系统会给出错误信息;

◆若仅仅函数名相同,而参数的个数、类型或顺序不同,系统将它作为普通的函数重载,这时将丢失虚函数的特性。

纯虚函数

纯虚函数是一个在基类中说明的虚函数,它在该基类中没有定义,但要求在它的派生类中必须定义自己的版本,或重新说明为纯虚函数。

纯虚函数的定义形式如下:

virtual 函数类型函数名(参数表)=0;

如果一个类至少有一个纯虚函数,那么就称该类为抽象类。

抽象类只能作为其他类的基类来使用,不能建立抽象类对象,其纯虚函数的实现由派生类给出。

如果一个类至少有一个纯虚函数,那么就称该类为抽象类。

抽象类只能作为其他类的基类来使用,不能建立抽象类对象,其纯虚函数的实现由派生类给出。抽象类不能用作参数类型、函数返回值或显式转换的类型。可以定义抽象类的指针和引用,此指针可以指向它的派生类,进而实现多态性。

18、系统还预定义好了4个流类的对象,供用户需要时使用,它们是:

(1) cin: stream类的对象,用来处理标准输入,即键盘输入。

(2) cout:ostream类的对象,用来处理标准输出,即屏幕输出。

(3) cerr:ostream类的对象,用来处理标准出错信息,它提供不带缓冲区的输出。

(4) clog:ostream类的对象,用来处理标准出错信息,但它提供带缓冲区的输出。

具体流方面内容看ppt

19、异常处理

Try,throw,catch

Catch(…)可以捕获任何异常

20、名字空间(namespace)using namespace std;

访问名字空间的成员

例如:namespace NSA

{

Class Array

{….}

};

namespace NSB

{

Class Array1

{….}

};

①直接使用法

NSA::Array a; NSB::Array1 b;

②指定名字空间

using namespace NSA; Array a;

using namespace NSB; Array1 b;

③声明引用成员

using NSA::Array; Array a;

using NSB::Array; Array1 b;

④使用别名

namespace US=NSA;

namespace MS=NSA;

US::Array a;

MS::Array1 b;

21、static 作用

①第一条也是最重要的一条:隐藏。

当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。Static可以用作函数和变量的前缀,对于函数来讲,static的作用仅限于隐藏,而对于变量,其可以保持变量内容的持久。

一、局部静态变量

在C/C++中, 局部变量按照存储形式可分为三种auto, static, register

( 谭浩强, 第174-175页)

与auto类型(普通)局部变量相比, static局部变量有三点不同

1. 存储空间分配不同

auto类型分配在栈上, 属于动态存储类别, 占动态存储区空间, 函数调用结束后自动释放, 而static分配在静态存储区, 在程序整个运行期间都不释放. 两者之间的作用域相同, 但生存期不同.

2. static局部变量在所处模块在初次运行时进行初始化工作, 且只操作一次

3. 对于局部静态变量, 如果不赋初值, 编译期会自动赋初值0或空字符, 而auto类型的初值是不确定的. (对于C++中的class对象例外, class的对象实例如果不初始化, 则会自动调用默认构造函数, 不管是否是static类型)

相关文档
最新文档