2009-05-10 57 views
1

我正在查看Wrapper類的.h文件。和類包含一個私有成員:關於&運算符在C++中的問題

T* dataPtr; 

(其中T是如在template < class T > .h文件的頂部定義)

的類提供了兩個「*重載操作者」的方法:

T& operator*() 
{ 
    return *dataPtr; 
} 

const T& operator*() const 
{ 
    return *dataPtr; 
} 

兩者都只是簡單地返回*dataPtr,但簡單的英語是什麼意思「*dataPtr」實際返回?它如何適合返回類型「T&」?

回答

6

返回類型T &指出您正在返回T對象實例的引用。 dataPtr是一個指針,它使用*「取消引用」(獲取指針的引用值/實例)。

2

dataPtr是指向某物的指針。 (*,而不是'is',你可以說''指的是'或'是指向')指針,即dataPtr指向的東西。

T &表示'對類型爲T的對象的引用'(不要與T *混淆,這意味着'指向類型爲T'的對象的指針)。

1

*DataPtrDataPtr指向的實際數據。兩個操作員都返回對T的引用。 A 參考是一種您應該考慮的類型,就像它引用的值的另一個名稱一樣。 「引擎蓋下」,它類似於一個指針,但不要這樣想。它不能做指針數學,或被「重新安置」。其中一個操作符爲const,用於const對象,另一個用於普通對象。

1

包裝類看起來像是一個C++指針。

運算符*提領將評估它存儲的東西的包裝器(在dataPtr中)。你得到的是對這個內容的引用。例如。你可以指定一些東西到基準

*intWrapper = 42;

有兩個運營商,因爲有一個恆定的和非固定的版本。當你解引用一個常量包裝類時,你不能指定它(一個const引用(T &)被返回)