关键词: C++
运算符重载
(1) 重载运算符的运算顺序和优先级不变,但参数和返回类型是可以重新说明的。
(2) C++规定,运算符中,参数说明都是内部类型的,不能重载,如:int* operator+(int, int*);
(3) C++还规定了“.、::、.*、->、?:”这五个运算符不能重载,也不能创造新的运算符,如◎、#
(4) C++规定:=、()、[]、->这四种运算符必须为成员形式。
重载增量运算符
1、C++约定,在增量运算符定义中,放上一个整数形参,就是后增量运算符:
Increase& operator++() // 前增量
Increase operator++(int) // 后增量,int只是为了区别前增量和后增量,没有任何作用
2、前增量运算符返回引用,后增量运算符返回值。
赋值运算符
1.像拷贝构造函数一样,C++也默认提供赋值运算符,同时也存在浅拷贝和深拷贝的问题。什么时候浅拷贝不合适,就应提供赋值运算符。
2.如果赋值运算符说明为保护或私有的,则可以将赋值操作限定在累得作用域范围,防止应用程序中使用赋值操作。
I/O流
I/O标准流类
Cin | cout | cerr | clog |
键盘 | 屏幕 | 屏幕 | 打印机 |
文件流类
文件输出类ofstream常用的构造函数:
ofstream::ofstream(char* filename, int mode = ios::out, int prot = filebuf::openprot)
mode是打开方式,prot是文件保护方式
mode标志 | 含义 |
ios::ate ios::in ios::out --------------- ios::trunk ios::nocreate ios::noreplace ---------------- ios::binary | 如果文件存在,输出内容加在文件末尾 具有输入能力(ifstream默认) 具有输出能力(ofstream默认) ------------------------------------------- 如文件存在,清除文件内容(默认) 如文件不存在,返回错误 如文件存在,返回错误 ---------------------------------------------- 以二进制打开文件 |
Prot标志 | 含义 |
filebuf::openprot filebuf::sh_none filebuf::sh_read filebuf::sh_write | 兼容共享方式 独占,不共享 允许读共享 允许写共享 |
1、参数filename的文件名要说明其路径,其中斜杠要双写,因为编译器理解下的斜杠是字符转换符。
2、要检查文件是否打开,则判断fail()成员函数:
ofstream myf(“myname”);
if (myf.fail()) {…}
串流类
1. 串流类不是标准设备,所以没有cout那样预先定义的全局对象。
2. 要定义一个串流类对象,须提供字符数组和数组大小。
3. 类istrstream用于执行串流输入,最有用的构造函数为:
istrstream::istrstream(const char* str)
istrstream::istrstream(const char* str, int size)
4. 类ostrstream用于执行串流输入,最有用的构造函数为:
ostrstream::ostrstream(char* str, int size, int prot = ios::out)
I/O成员函数
getline(char* line, int size, char = ‘/n’)
get()
get(char*, int , char delim = ‘/n’)
put()
重载插入运算符
ostream& operator<<(ostream& oo, RMB& d)
重载模板函数
如果函数的名字与函数模板相同,但操作不同,就有必要用重载的方法将它们分开。编译程序在处理这种情况时,首先匹配重载模板,然后再寻求模板的匹配。
异常处理:
1、 try程序块之后可以出现任意数量的catch程序块,但是try程序块之前不许出现catch程序块。
2、 catch程序块数据类型之后的参数名是可选的:catch(double)
3、 如果一个函数抛掷了一个异常,但是在异常处理函数的调用链中找不到与之匹配的catch块,则改程序通常以abort()函数调用终止。
4、 抛掷异常与异常处理程序之间,是按数据类型的严格匹配来捕获的,不允许类型转换。默认异常处理类型为”…”。
5、 对于类的派生关系,按照下列规则捕获异常:
a)异常处理的数据类型是公有基类,抛掷异常的数据类型是派生类
b)异常处理的数据类型是指向公有基类的指针,抛掷异常的数据类型是指向派生类的指针