1、 main函数是唯一被操作系统显示调用的函数。
2、函数的四个元素:返回类型、函数名、形参表、函数体。
3、返回值类型必须和函数的返回类型相同,或者可以转换为函数的返回类型。
4、大多数系统中,main函数返回值是一个状态指示器。返回0表示main函数成功执行完毕,返回其他非零值有操作系统定义的含义。
5、GNU编译器:g++ prog.cpp -o prog
微软编译器:cl -GX prog.cpp
6、 系统不同,如何处理和是否处理报告main函数运行失败也不同。
7、 C++没有直接定义输入或输出的任何语句,而是通过标准库提供。
8、 iostream库的基础是istream和ostream类型,分表表示输入流和输出流。流是指要从某种IO设备上读入或者写出的字符序列,字符是随时间顺序生成或消耗的。
9、 标准输入和输出对象:cin、cout、cerr、clog,一般情况下,系统将这些对象与执行程序的窗口联系起来。运行程序时,大部分操作系统提供了重定向方法。
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("input.txt");
ofstream fout("output.txt");
streambuf *cinbackup;
streambuf *coutbackup;
void main()
{
coutbackup= cout.rdbuf(fout.rdbuf());
cinbackup= cin.rdbuf(fin.rdbuf());
cout<<"Hello world"<<endl;
char line[100];
cin>>line;
cout<<line<<endl;
// restore standard streambuf
cin.rdbuf(cinbackup);
cout.rdbuf(coutbackup);
}
c形式的:
freopen("input.txt","r",stdin);
freopen("output.txt","w",stdout);
cmd方式:
10、cout和cerr的主要区别就是cout可以利用cmd命令行参数的方式进行重定向,而cerr则不行。cerr不被缓冲,也就说错误消息可以直接发送到显示器,而无需等到缓冲区或者新的换行符时,才被显示。而cout是一个有缓冲的输出。但是cerr也可以通过rdbuf方法重定向到文件中。
11、 预处理指示:#include <iostream>
12、 C++中每个表达式都会产生一个结果,通常是将操作符作用到其操作数所产生的值。当操作符是输出操作符时,结果是操作数的值,即输出操作返回的值是输出流本身。
13、 endl-操纵符:写入输出流时,具有换行的效果,并刷新与设备相关的缓冲区,通过刷新缓冲区用户可以立即看到写入到流中的输出。
14、 使用标准库中的名字:使用名空间程序员可以避免无意使用了与标准库中所定义相同的名字而导致冲突。标准库定义的名字是定义在命名空间中的。
::作用域操作符,scope operator
15、 cout将每个操作数输出到标准输出,iostream库定义了接受全部内置类型的输入输出操作符版本。
16、 单行注释、成对注释,复合赋值操作符,语句块。
17、 C++程序的缩排和格式
18、 退出for循环,在for循环开始定义的int i一般不可访问,然后并非所有的编译器都有这个要求。标准化之后,c++中for循环内的变量是不可访问的。
19、 编辑-编译-调试
20、 从键盘输入文件结束符:windows control+z; unix control+d。
21、 类定义放入一个文件中,要使用该类的任何程序都必须包含文件,文件名通常和定义在头文件中的类名一样。
22、 每个类定义一种类型,类型名和类名相同。
23、 使用标准库定义的头文件用<>, 使用自定义的头文件用" "。
24、 成员函数:也称类方法。成员函数只定义一次,但被视为每个对象的成员,使用同一类型的所有对象共享同一个定义。
25、 点操作符:调用要操作的对象的成员,左操作数必须是类类型的对象,右操作数必须制定该类型的成员。
26、 main函数的返回值被视为状态指示器。
27、 cerr不缓冲,通常用于不是程序正常逻辑部分的错误和其他输出;clog默认情况下,写到clog是带缓冲的。