August 2021
Intermediate to advanced
450 pages
5h 35m
Chinese
函数调用是从程序的一个部分向另一个部分传递信息的主要方式,也是推荐方式。执行任务所需的信息作为参数传递给函数,生成的结果作为返回值传回。例如:
函数间也存在其他传递信息的路径,例如全局变量(参见1.5节)、指针和引用参数(参见3.6.1节),以及类对象中的共享状态(参见第4章)。全局变量是众所周知的错误之源,我们强烈建议不要使用它,而状态通常只应在共同实现了一个良好定义的抽象的函数间共享(例如,类的成员函数,参见2.3节)。
了解了函数传递信息的重要性,就不会对存在多种传递方式感到惊讶了。其中的重点是:
·对象是拷贝的还是共享的?
·如果共享对象,它可变吗?
·对象可以移动从而留下一个“空对象”吗(参见5.2.2节)?
参数传递和返回值的默认行为是“拷贝”(参见1.9节),但某些拷贝可隐式优化为移动。
在sum()例子中,得到的int被拷贝出sum()而将可能非常大的vector拷贝进sum()会很低效且无意义,因此参数是以引用方式传递的(用&指出,参见1.7节)。
sum()没有理由修改其实参。这种不可变性是通过将vector参数声明为const实现的(参见1.6节),因此vector是以const引用方式传递的。
Read now
Unlock full access