Chapter1
每个C++程序中都必须包含main函数,main函数是唯一被操作系统显示调用的函数。main函数中的return 0代表告诉操作系统程序成功执行完毕。函数的四要素:返回类型,函数名,圆括号内的形参表,函数体。main函数的形参个数是有限的,main函数的返回值类型必须是int型。
GNU编译器是常用的C++编译器,其默认命令是g++。顺序:先编译,然后执行编译好的程序,unix下./a.out,“.”后面的斜杠表示文件处于当前目录下。
标准输入输出对象:
- cin: istream类型对象,标准输入
- cout:ostream类型对象,标准输出
- cerr:ostream类型对象,标准错误,输出警告和错误信息
- clog:ostream类型对象
std::cout<<"Enter two numbers:"<<std::endl;
为什么可以连着写?因为std::cout<<"Enter two numbers:"
返回值是其左操作数,即输出操作返回的值是输出流本身,所以我们可以将输出请求连接在一起。endl称为操纵符(manipulator),作用:输出换行,并刷新与设备相关联的缓冲区,通过刷新缓冲区,用户可以立即看到写入到流中的输出,在调试过程中插入的输出语句都应该刷新输出流,忘记刷新输出流可能会造成输出停留在缓冲区中,如果程序崩溃,将会导致对程序崩溃位置的错误判断。
使用标准库中的名字:cout,endl是命名空间(namespace)std中定义的,使用命名空间,程序员可以避免由于无意中使用了与库中所定义名字相同的名字而引起冲突。(个人理解,我们也可以定义和标准库中一样名字的如cout,endl,但是指定命名空间之后,再加上“::”作用域操作符,就能分清是哪个命名空间下的关键字了)
P7注解没看懂。
未初始化变量和已初始化变量:当我们确定变量在第一次使用时会被赋予一个新值,那不进行初始化也没问题。但是赋初值总是没错的,如果不能保证读取变量之前重置变量,就应该初始化变量。
注释:注释对/**/,这种注释方法是从C语言中继承来的,注释对不能嵌套,对于一些函数的注释,是应该定义在.h还是.cpp文件中比较好?
复合赋值操作符“+=”,前自增操作符“++”。
C++对缩排格式没啥要求(类比python)
编译器可以检查出一些基本错误:语法错误(少了分号),类型错误,声明错误(使用了未定义的变量)
while(cin>>n)
结果是测试流的状态,如果流是有效的,测试成功,如果遇到文件结束符或者遇到无效输入时,则istream对象是无效的。
类:一般来说,我们将类定义放入一个文件中,要使用该类的任何程序都必须包含这个文件,也就是.h头文件。可以在头文件中实现函数声明和定义。
标准库的头文件用尖括号括起来#include <iostream>
,非标准库的头文件用双引号括起来#include "Sales_item.h"
P20页的例子中用了cerr并且如果进了cerr那个分支main函数的返回值是-1。
成员函数是由类定义的函数,也成为类方法,成员函数只定义一次,但是被视为每个对象的成员(对象是类的实例化),类对象调用成员函数时采用点操作符“.”。点操作符的右操作数不是对象或值,是成员的名字。