[英]Using LLVM IR, how do I transform a function with non-void return into a void return type
[英]Will this void function return a value at all? Or do I have to add a "&"?
假設我有一個以前編寫的名為 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) 沒有“返回”值,因為它是一個空函數? 那么它將如何設置高度?
2.4會成為我盒子的高度嗎? 如何?
是的,2.4 將成為存儲在Box
對象成員變量中的高度。
Box::setHeight
是一個成員函數。 它獲得對調用它的對象的隱式引用。 當從構造函數調用時,成員函數獲取對正在構造的對象的引用。 這就是為什么任務
height = h;
里面Box::setHeight
會修改你的Box
對象的height
成員變量。
我必須添加
&
嗎?
不。對正在構造的對象的引用是隱式傳遞的; 您無需采取任何行動。
注 1:為了讓您的代碼能夠編譯, Box
需要有一個名為height
的成員變量。 這與構造函數中的height
不同,它是從調用者傳遞給構造函數的參數。
注 2:您可以在構造函數中通過使用this
關鍵字引用成員變量height
來分配它:
this->height = height;
您還可以使用初始化列表來初始化height
:
Box::Box (double height, double width, double length)
: height(height)
, width(width)
, length(length)
{
// The body can be left empty
}
假設Box
看起來像這樣:
class Box {
private:
double height, width, length;
public:
Box(double height, double width, double length);
void setHeight(double h);
void setWidth(double w);
void setLength(double l);
};
然后Box::setHeight
正在設置類的height
成員。 成員函數可以訪問類的數據成員以及傳入的任何參數,因此函數不需要返回任何內容來為成員賦值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.