600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Effective C++之条款20:宁以pass-by-reference-to-const替换pass-by-value

Effective C++之条款20:宁以pass-by-reference-to-const替换pass-by-value

时间:2019-11-15 10:17:33

相关推荐

Effective C++之条款20:宁以pass-by-reference-to-const替换pass-by-value

声明:

文中内容收集整理自《Effective C++(中文版)第三版》,版权归原书所有。本内容在作者现有能力的基础上有所删减,另加入部分作者自己的理解,有纰漏之处敬请指正。

条款20:宁以pass-by-reference-to-const替换pass-by-value

Prefer pass-by-reference-to-constto pass-by-value.

函数pass-by-value参数都是以实际实参的拷贝为初值,这些拷贝是有对象的copy构造函数执行的,可能使得pass-by-value成为昂贵的费时操作。

通过pass-by-reference-to-const就可以回避所有的构造函数和析构动作了。

以pass-by-value方式传递参数可能导致slicing(对象切割)问题。当一个derived class对象以by-value方式传递给一个参数类型为base class对象,derived class对象会被视为 base class对象,而derived class的所有特化信息都会被切除。通过pass-by-reference方式可以解决slicing问题。

从C++编译器底层来看,references往往以指针实现出来,pass-by-reference通常意味着真正传递的是指针。

请记住:

尽量以pass-by-reference-to-const来代替pass-by-value,前者通常比较高效,并可以避免切割问题。以上规则并不适用于内置类型以及STL迭代器和函数对象,对它们而言,pass-by-value往往比较适当。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。