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