代码之家  ›  专栏  ›  技术社区  ›  Mutating Algorithm

在类成员函数中将常量引用作为函数参数传递

  •  0
  • Mutating Algorithm  · 技术社区  · 6 年前

    Line 包含以下修饰符,该修饰符将值赋给类数据成员。

    void Start(const Point &start);

    start 函数参数中的变量是一个引用,我将其实现如下:

    void Line::Start(const Point &start) { m_start = start; }

    在主函数中,我有以下内容。

    Line line; Point start(1, 1); line.Start(start);

    会不会 m_start 开始 Point 对象,因为它是通过引用传递的?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Jeremy Friesner    6 年前

    m_start data成员现在是否直接引用起始点 对象,因为它是通过引用传递的?

    不,C++引用的一个属性(以及它们的行为与指针不同的方式之一)是不可能的。 重新拔插 m_start 成员变量的类型为 Point 而不是打字 Point &

    相反, start 开始 m_开始 成员变量。

    Start() 方法的行为与 void Line::Start(Point start) 方法将,但以下情况除外:

    1. 在你的 const Point & 开始() ,不生成点对象的单独/方法本地副本

    2. 施工点; 开始() ,正在尝试修改 方法内部的错误是编译时错误(而在pass-by-value版本中,内部的代码 开始() 开始() 函数,因为它们只修改局部变量/参数)