c++ - 这个 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 函数?那么它将如何设置高度?
解决方案
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
}
推荐阅读
- python - Rapidfuzz 匹配合并
- arrays - 合并一维数组列表的更快方法?
- mysql - mysql不接受空值
- javascript - 在搜索十字图标上运行功能
- linux - awk gsub 替换串联
- azure - 如何从 azurerm_resource_group_template_deployment 读取 output_content
- python - Scrapy spider 未在 docker 容器中执行 close 方法
- haskell - 如何让程序在 Haskell 中等待
- nbug - 为什么 N Bug HostApplicationVersion 显示的应用程序版本不正确?
- swift - 如何使用 MovieDB API Swift 为 TableView 进行分页?