2009-10-10 35 views

回答

5

只要有可能通過它們訪問相同的對象,就會使用兩個指針。該標準的第3.10/15段規定了對物體的訪問有效的時間。

如果一個程序試圖通過其它的左值比以下類型的行爲是未定義的一個訪問對象的存儲值:

  • 動態類型的對象,
  • 對象的動態類型的cv限定版本,
  • 一種類型,它是與對象的動態類型對應的有符號或無符號類型,
  • 一種類型,即有符號或無符號類型的對應(包括 遞歸地,子集合的成員或包含的聯合)的聚合體或聯合體類型,其中包括以下類型之一的上述類型的聚合體或聯合體類型: ,
  • 一種類型,它是對象的動態類型(可能是CV-合格的)基類的類型,
  • char或unsigned char類型。

在你的情況,*derived或者是動態類型的對象的1-值,或者是一類是一個基類型的動態型的對象組成。 *base是一種類型,它是對象的動態類型的基類類型。

因此,您可以通過derivedbase訪問對象,從而使兩個指針具有別名。

相關問題