Accelerated C++:4 组织程序和使用数据

C++组织大型程序的基本方法:

  • 函数
  • 数据结构

函数

  • 定义时,先指定它的返回值类型,类型后是函数名,函数名后面用()括起的是参数列表,最后一部分是{}括起的函数体。

参数

  • 参数是函数中的局部变量,调用函数时他们被创建,函数返回时被销毁。
  • 使用参数之前必须先定义,定义不会马上创建参数,在函数被调用时才会创建。
  • 调用函数必须提供相应的参数,在函数开始执行时对参数进行初始化。
  • 提供的参数对应于调用的函数所具有的参数,参数的顺序必须跟参数的相应顺序相同。
  • 参数按值调用,参数获得的只是参数值的一个复制。

声明

一个函数在每一个使用它的源文件中被声明,函数仅仅被定义一次。
调用函数前必须先声明,每一个参数的类型都必须与相应的参数一致。

重载

同一个函数名可以定义多个函数——只要函数在参数的个数或类型上有差异。系统环境能够区分对同一个类型的引用和常量引用。

引用

  • 引用&:是一个特定对象的另一个名称
  • const+&:确保不会对引用做任何可能改变它的值的动作。
  • 不存在一个引用的引用,定义一个引用的引用和原来对象的引用效果时一样的。
  • 定义一个非常量的引用就不能指向一个常量对象或常量引用

clear成员对于istream表现的行为:清楚错误标记使得输入动作可以继续。


三种函数参数

  • 参数无const&:函数的调用会复制参数,不改变参数的值
  • 参数有const&:不复制对应的参数,同时不改变参数的值,提高程序效率。
    • vectorstring类型的参数复制耗费时间
    • intdouble类的简单内部类型,复制非常快,额外开销较小,没有不要使用const引用

值传递或与常量引用连接在一起的参数可以取任何值。


  • 参数无const&:不复制参数,改变参数的值
    • 非常量引用参数对应的参数必须是左值,左值指示非临时对象的值,也可以是一个引用或返回一个引用的函数的调用结果

异常

  • 程序抛出异常,这个程序就会在抛出异常的地方终止执行并转移到程序的另一部分,并向这部分提供一个异常对象(含有调用程序可以用来处理异常的信息)。

异常处理

try { // 代码,启动一个可能会引发异常的块语句
} catch (t) { // 代码 }
  • 尝试执行{}中紧跟在try关键字之后的语句,如果语句中的任何地方出现了t异常,那么停止执行这些语句,转去执行另外一系列用{}括起的语句,是catch捕获子句的一部分。
  • catch子句指示了所捕获的异常的类型。
  • 如果trycatch之间的语句没有引发异常而正常结束的话,那么程序就跳过全部的catch子句从而继续执行下一条语句。

throw e :终止当前函数,将值e传回给调用程序

  • demain_error定义于头文件<stdexcept>,报告-取值不能接受。
  • 创建一个待抛出domain_error对象时,可以给它一个字符串描述错误信息。
  • 异常类:logic_error domain_error invalid_argument length_error out_of_range runtime_error range_error overflow error underflow_error
  • e.what():返回一个值,报告问题所在。

一个时间上是跟在异常之后执行的运算,在程序正文中是没有必要位于异常发生的地点之后的。
在一条可能引发异常的语句中不应该出现任何其他的副作用,尤其是包含输入和输出的语句。

程序结构

头文件

#include <系统头文件>
#include "用户定义的头文件名称",有后缀.h
头文件中声明函数,用一个分号代替函数的函数体,还可以去掉参数的名称,把声明本身所用的名称都包含进去。
源文件中定义函数。


头文件中应该使用完整的限定名(标准库:std::)而不是使用using声明。
源文件中可以使用的using声明。

预处理指令:

  • ifndef 变量:检查 变量 是否被定义,如果特定的变量未定义,则ifndef指令会请求预处理程序对在它和下一个匹配的#endif之间的所有内容做出适当的处理动作。
  • 保证多次包含的动作是安全的,防止对头文件的重复包含,让每一个头文件都满足多次包含的要求。
  • 25
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值