函数的返回类型可以是内置类型(如int或者double)、类类型或复合类型(如int&或string*),还可以是void类型,表示函数不返回任何值。但是函数必须指定返回类型。
函数的返回值用于初始化在调用函数处创建的临时对象。
当函数返回引用类型时,没有复制返回值,相反,返回的是对象本身。
千万不要返回局部对象的引用。
返回引用的函数返回一个左值
千万不要返回指向局部对象的指针
默认实参是一种虽然并不普遍、但在多数情况下仍然适用的实参值。调用函数时,可以省略有默认值的实参。
内联函数可以避免函数调用的开销。“inline”,将函数指定为内联函数,就是将它在程序中每个调用点上“内联地”展开。大多数编译器不支持递归函数的内联。大规模函数也不可能在调用点内联。
由于this指针是隐式定义的,因此不需要再函数的形参表中包含this指针,实际上,这样做也是非法的。
构造函数是特殊的成员函数,与其他成员函数不同,构造函数和类同名,而且没有返回类型。而与其他成员函数相同的是,构造函数也有形参表(可能为空)和函数体。
函数重载:具有相同的名字而形参表不同
重复声明:形参表和返回类型完全匹配
错误:形参表完全相同,返回类型不同
重载确定的步骤:1.候选函数;2.选择可行函数;3.寻找最佳匹配(如果有的话);4.含有多个形参的重载确定;
指向函数的指针:可以用typedef简化函数指针的定义,只能通过同类型的函数或函数指针或0值常量表达式进行初始化或赋值。
指向函数的指针可用于调用它所指向的函数而不需要使用解引用操作符;函数的形参可以是指向函数的指针;函数可以返回指向函数的指针;可以使用函数指针指向重载的函数,但是指针的类型必须与重载函数的一个版本精确匹配。
-------------------------------------------------------------------------------------------------------------------
条件状态:每个IO类都定义了三个iostate类型的常量值,分别表示特定的位模式。badbit标志着系统级的故障,无法修复。failbit标志着可以恢复的错误。eofbit是在遇到文件结束符的时候设置的,此时同时还设置了failbit。
rdstate成员函数返回一个iostate类型的值,该值对应于流当前的整个条件状态。
可以多次调用setstate或者clear函数实现设置或清除多个状态二进制位的情况。另一种方法是使用按位或(OR)操作符在一次调用中生成“传递两个或更多状态位”的值。
如果需要刷新所有输出,最好使用unitbuf操作符。
如果程序崩溃(不正常结束),则不会刷新缓冲区。
fstream头文件提供了三种支持文件IO的类型:ifstream(读),ofstream(写),fstream(读写)
infile测试是否成功打开文件,outfile测试文件是否可以使用
将文件流与新文件重新捆绑:先关闭(close)现在的文件,然后打开(open)另一个文件。
文件模式
in | 打开文件做读操作 |
out | 打开文件做写操作 |
app | 在每次写之前找到文件尾 |
ate | 打开文件后立即将文件定位在文件尾 |
trunc | 打开文件时清空已存在的文件流 |
binary | 以二进制模式进行IO操作 |