C++ 学习笔记(三)

 

关键词C++                                          

 

运算符重载

(1)   重载运算符的运算顺序和优先级不变,但参数和返回类型是可以重新说明的。

(2)   C++规定,运算符中,参数说明都是内部类型的,不能重载,如:int* operator+(int, int*);

(3)   C++还规定了“.、::、.*->、?:”这五个运算符不能重载,也不能创造新的运算符,如◎、#

(4)   C++规定:=、()、[]->这四种运算符必须为成员形式。

重载增量运算符

1C++约定,在增量运算符定义中,放上一个整数形参,就是后增量运算符:

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)异常处理的数据类型是指向公有基类的指针,抛掷异常的数据类型是指向派生类的指针

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值