美文网首页Effective C++ 精读
Effective C++ Term 20 以引用传递

Effective C++ Term 20 以引用传递

作者: vancymoon | 来源:发表于2019-05-19 23:40 被阅读0次

pass-by-reference-to-const 的好处:

  1. 避免拷贝构造函数的开销
  2. 避免 slicing 问题,因为引用类似于指针,可以实现多态;下面例子中解释得很清楚
class Base;
class Derived: public Base;
void MyFunc(Base);

\\ ...

Derived derived;
MyFunc(derived);

这段代码对MyFunc的调用有一个 down-casting 的过程,由于参数类型要求的是base,所以传进去的derived会被 slice 为基类,其派生类部分的成员都会被剔除,并且多态也无法体现(调用的virtual函数,如果存在的话,都是基类的函数)

而如果是 pass-by-reference-to-const,则上述问题不会存在

相关文章

  • Effective C++ Term 20 以引用传递

    pass-by-reference-to-const 的好处: 避免拷贝构造函数的开销 避免 slicing 问题...

  • C++基础

    C++ 值传递、指针传递、引用传递详解C++中引用传递与指针传递区别 引用传递和指针传递的区别 引用的规则:(1)...

  • 2018-05-30 宁以pass-by-reference-t

    本文摘自Effective C++ 缺省情况下C++以by vaule方式传递对象至函数。除非你另外指定,否则函数...

  • C++ 引用传递的学习

    C++ 引用与引用作为函数的参数C++函数的三种传递方式为:值传递、指针传递和引用传递 C++ 上课习题 刘月林2...

  • 条款 20:宁以 pass-by-reference-to-co

    《Effective C++ 中文版 第三版》读书笔记 条款 20:宁以 pass-by-reference-to...

  • C/C++ basis 01

    1. C和C++区别 2. 指针和引用 sizeof(引用)等于 引用指向对象的大小。 对比值传递,引用传递(引用...

  • 要读的书书名

    1, 重读《Effective C++》《 More Effective C++》《by Scott Meye...

  • Effective C++ Term 28 关于 handles

    C++ 中,handles包含以下几类 指针 引用 迭代器 要尽量避免函数返回 handles,一方面,留下了允许...

  • C++使用Lambda函数实现多线程

    转帖: C++使用Lambda函数实现多线程thread - 传递引用参数

  • Java中是否有引用传递

    前言 总所周知,C++中有值传递、指针传递、引用传递三种参数传递类型。那么我们就来探究Java的传递类型。 我们先...

网友评论

    本文标题:Effective C++ Term 20 以引用传递

    本文链接:https://www.haomeiwen.com/subject/znbczqtx.html