摘要:
顺序容器(sequential container)。它将单一类型元素聚集起来成为容器,然后根据位置来存储和访问这些元素,这就是顺序容器。顺序容器的元素排列次序与元素值无关,而是由元素添加到容器里的次序决定。 标准库定义了三种顺序容器类型:vector、list 和 deque(是双端队列“doub 阅读全文
摘要:
iostream 标准库支持内存中的输入/输出, 只要将流与存储在程序内存中的string 对象捆绑起来即可。此时,可使用 iostream 输入和输出操作符读写这个 string 对象。标准库定义了三种类型的字符串流: • istringstream,由 istream 派生而来,提供读 stri 阅读全文
摘要:
在打开文件时,无论是调用 open 还是以文件名作为流初始化的一部分,都需指定文件模式(file mode)。每个 fstream 类都定义了一组表示不同模式的值, 用于指定流打开的不同模式。文件模式是整型常量,在打开指定文件时,可用位操作符设置一个或多个模式。文件流构造函数和 open 函数都提供 阅读全文
摘要:
文件流对象的使用 fstream 头文件定义了三种支持文件 IO 的类型: 1. ifstream,由 istream 派生而来,提供读文件的功能。 2. ofstream,由 ostream 派生而来,提供写文件的功能。 3. fstream,由 iostream 派生而来,提供读写同一个文件的功 阅读全文
摘要:
每个 IO 对象管理一个缓冲区,用于存储程序读写的数据。如有下面语句: 系统将字符串字面值存储在与流 os 关联的缓冲区中。下面几种情况将导致缓冲区的内容被刷新,即写入到真实的输出设备或者文件: 1. 程序正常结束。作为 main 返回工作的一部分,将清空所有输出缓冲区。 2. 在一些不确定的时候, 阅读全文
摘要:
实现 IO 的继承正是错误发生的根源。一些错误是可恢复的;一些错误则发生在系统底层,位于程序可修正的范围之外。IO 标准库管理一系列条件状态(condition state) 成员,用来标记给定的 IO 对象是否处于可用状态,或者碰到了哪种特定的错误。 strm::iostate 机器相关的整型名, 阅读全文
摘要:
标准库类型和头文件 Header Type iostream istream wistream从流中读取 ostream wostream 写到流中去 iostream wiostream对流进行读写;从 istream 和 ostream 派生而来 fstream ifstream wifstre 阅读全文
摘要:
函数指针是指指向函数而非指向对象的指针。像其他指针一样,函数指针也指向某个特定的类型。函数类型由其返回类型以及形参表确定, 而与函数名无关: 这个语句将 pf 声明为指向函数的指针,它所指向的函数带有两个 const string& 类型的形参和 bool 类型的返回值。 *pf 两侧的圆括号是必需 阅读全文
摘要:
函数匹配与实参转换 函数重载确定, 即函数匹配是将函数调用与重载函数集合中的一个函数相关联的过程。通过自动提取函数调用中实际使用的实参与重载集合中各个函数提供的形参做比较,编译器实现该调用与函数的匹配。匹配结果有三种可能: 1. 编译器找到与实参最佳匹配的函数,并生成调用该函数的代码。 2. 找不到 阅读全文
摘要:
出现在相同作用域中的两个函数,如果具有相同的名字而形参表不同,则称为重载函数。 可以定义一组函数,它们执行同样的一般性动作,但是应用在不同的形参类型上,调用这些函数时,无需担心调用的是哪个函数。 通过省去为函数起名并记住函数名字的麻烦,函数重载简化了程序的实现,使程序更容易理解。 任何程序都仅有一个 阅读全文
摘要:
assert预处理宏 assert是一种预处理宏。所谓预处理宏其实是一个预处理变量,它的行为类似于内联函数。assert预处理宏用一个表达式作为它的条件: 若表达式expr为假,则assert输出信息并终止程序执行,如果表达式为真,则assert什么也不做。 assert宏定义在cassert头文件 阅读全文
摘要:
内联函数 下面的例子中: 为这样的小操作定义一个函数的好处是: 阅读和理解函数 shorterString 的调用,要比读一条用等价的条件表达式取代函数调用表达式并解释它的含义要容易得多。 如果需要做任何修改, 修改函数要比找出并修改每一处等价表达式容易得多。 使用函数可以确保统一的行为,每个测试都 阅读全文
摘要:
正如变量必须先声明后使用一样,函数也必须在被调用之前先声明。与变量的定义类似,函数的声明也可以和函数的定义分离;一个函数只能定义一次,但是可声明多次。 函数声明由函数返回类型、函数名和形参列表组成。形参列表必须包括形参类型,但是不必对形参命名。这三个元素被称为函数原型, 函数原型描述了函数的接口。 阅读全文
摘要:
return 语句用于结束当前正在执行的函数,并将控制权返回给调用此函数的函数。return 语句有两种形式: 没有返回值的函数 不带返回值的 return 语句只能用于返回类型为 void 的函数。在返回类型为 void 的函数中,return 返回语句不是必需的,隐式的 return 发生在函数 阅读全文
摘要:
main:处理命令行选项 第一个形参argc表示数组中字符串的数量,第二个形参argv是一个数组,因为第二个形参是一个数组,所以main函数也可以定义为: 其中,argv指向char*。 当实参传给main函数之后,argv的第一个元素指向程序的名字或者一个空字符串,接下来的元素依次传递给命令行提供 阅读全文
摘要:
const形参 当形参是const时,要注意顶层const: 当使用实参初始化形参时会忽略掉顶层的econst,也就是说形参的顶层const被忽略掉。当形参是顶层const时,传给它常量对象或者非常量对象都是可以的: 调用fcn函数时,既可以传入const inr也可以传入int。 忽略掉形参的顶层 阅读全文
摘要:
每次调用函数时,都会重新创建该函数所有的形参,此时所传递的实参将会初始化对应的形参。 形参的初始化与变量的初始化一样:如果形参具有非引用类型,则复制实参的值,如果形参为引用类型,则它只是实参的别名。 传值参数 普通的非引用类型的参数通过复制对应的实参实现初始化。当用实参副本初始化形参时,函数并没有访 阅读全文
摘要:
函数的定义 函数由函数名以及一组操作数类型唯一地表示。函数的操作数,也即形参,在一对圆括号中声明,形参与形参之间以逗号分隔。函数执行的运算在一个称为函数体的块语句中定义。每一个函数都有一个相关联的返回类型。 函数的调用 C++ 语言使用调用操作符(即一对圆括号)实现函数的调用。正如其他操作符一样,调 阅读全文
摘要:
异常就是运行时出现的不正常,例如运行时耗尽了内存或遇到意外的非法输入。异常存在于程序的正常功能之外,并要求程序立即处理。 在设计良好的系统中,异常是程序错误处理的一部分。当程序代码检查到无法处理的问题时,异常处理就特别有用。在这些情况下,检测出问题的那部分程序需要一种方法把控制权转到可以处理这个问题 阅读全文
摘要:
break 语句 break 语句用于结束最近的 while、do while、for 或 switch 语句,并将程序的执行权传递给紧接在被终止语句之后的语句。 break 终止了 while 循环。执行权交给紧跟在 while 语句后面的if 语句,程序继续执行。 break 只能出现在循环或 阅读全文