簡體   English   中英

這個 void 函數會返回一個值嗎? 或者我必須添加一個“&”?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM