這個問題我是在《c++必知必會》條款28裡面看到的。c++指標比較的不是位址,而是物件同一性問題。即指標位址可以不同,而比較的結果卻相同,因為它們指向的是同乙個物件。這個問題用多重繼承比較直觀:
#include
2:
3:using
namespace std;
4:
5:class a ;
8:
9:class b ;
12:
13:class c: public b, public a ;
16:
17:int main()
18:
26:if (pc == pb)
27:
30: }
在我機器上執行的結果如下:
0043ef94 = 0043ef90
0043ef90 = 0043ef90
請按任意鍵繼續. . .
由此可以看出,指標比較的不是位址,而是物件同一性。
C 必知必會 指標比較的含義
c 指標比較的不是位址,而是物件同一性問題。即指標位址可以不同,而比較的結果卻相同。這個問題用多重繼承比較直觀 存在乙個從子類到任乙個基類的預定義轉化。乙個基類的指標是與其派生類的指標 的,並不是因為位址相同而是型別相同,因為派生類就是基類,就像班長就是學生一樣。這從更抽象的乙個層次來對待指標 乙個...
C 淺說指標比較
對於一些普通的值比較,如下 int v1 4 int v2 4 int v3 5 則v1 v2 為true v1 v2 為false v1 v3 為false 上面v1 v2 v3都有各自的儲存位址和值,而 v1 v2 比較的是它們的值,這裡它們的值都等於4,所以條件為真 同樣v1 v3 比較的也是...
C 直接cout指標名的含義
首先看下面這個 例項 include using namespace std int main 其輸出結果為 看到了一些例子裡面直接使用cout,剛開始感覺很疑惑,本來以為直接輸出該指標,結果輸出的是指標所指向的記憶體中存放的內容,直到讀到 0 結束標誌結束。後來查資料發現這是編譯器所預先設定的規則...