首页 > 解决方案 > 这个 void 函数会返回一个值吗?还是我必须添加一个“&”?

问题描述

假设我有一个以前编写的名为 Box 的类。我有以下构造函数和 void 函数:

Box::Box (double height, double width, double length)
{
    setHeight(height);
    setWidth(width);
    setLength(length);
} 

void Box::setHeight(double h)
{
    height = h;
}

在我的 main () 函数中,我稍后声明:

Box box1(2.4, 7.1, 5.0);

2.4会成为我盒子的高度吗?

如何?

voidBox::setHeight(double h) 没有“返回”值,因为它是一个 void 函数?那么它将如何设置高度?

标签: c++

解决方案


2.4会成为我盒子的高度吗?如何?

是的,2.4 将成为存储在Box对象的成员变量中的高度。

Box::setHeight成员函数。它获得对调用它的对象的隐式引用。从构造函数调用时,成员函数获取对正在构造的对象的引用。这就是为什么任务

height = h;

insideBox::setHeight会修改对象的height成员变量Box

我必须添加一个&吗?

不。对正在构造的对象的引用是隐式传递的;您无需采取任何行动。

注意 1:为了让您的代码能够编译,Box需要有一个名为height. 这height与构造函数中的 不同,后者是调用者传递给构造函数的参数。

注意 2:您可以在构造函数中通过使用关键字height引用它来分配成员变量:this

this->height = height;

您还可以使用初始化列表来初始化height

Box::Box (double height, double width, double length)
  : height(height)
  , width(width)
  , length(length) 
{
   // The body can be left empty
}

推荐阅读