簡體   English   中英

通過構造函數傳遞和存儲const引用?

[英]Passing and storing a const reference via a constructor?

這可能是一個簡單的問題,但我堅持下去。 我試圖通過它的構造函數將一個對象從ObjectA傳遞給ObjectB(它是ObjectA的一個成員)。 但是,我想傳遞一個const引用並無限期地存儲該引用,而不是傳遞值。 問題是我不知道該怎么做。

我可以用這樣的指針來處理這個問題:

class ClassB
{
private:
    int *ptrInternalX;
public:
    ClassB( int *tempX );
}

ClassB::ClassB( int *tempX )
{
    ptrInternalX = tempX
}

這樣,創建一個對象並將指針傳遞給int,該指針存儲在類中以供以后使用。

但是,當使用較大的對象時,指針讓我擔心內存泄漏和其他問題,所以我想嘗試使用'常量引用' (const&) 來做這樣的事情 但是,這似乎不起作用......

class ClassB
{
private:
    int &internalX;
public:
    ClassB( const int &tempX );
}

ClassB::ClassB( const int &tempX )
{
    internalX = tempX
}

我知道引用本質上是現有變量的“別名”(引用相同內存地址的不同名稱),並且需要使用現有變量立即初始化它們。 所以這會在我的程序中產生錯誤!

這甚至可能嗎? 或者是否有更好/更清晰的方式做這樣的事情? 我想使用常量引用的原因是只傳遞引用而不是大對象的速度,同時保持數據免受意外更改和內存泄漏......我確信有一種簡單直接的方法這樣做但我對const引用傳遞不是很熟悉。

class    ClassB
{
    private:
        const int&    internalX;
    public:
        ClassB(const int& tempX);
}

ClassB::ClassB(const int& tempX):
     internalX(tempX)
{
}

正如您所說,必須立即初始化reference 因此,如果您希望reference是類成員, 必須使用構造函數的初始化列表來設置它。

(這個簡短的解釋也可能會讓你更清楚,因為它專門針對你剛剛遇到的情況)

祝好運

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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