C 中的引用數組:用標準引用解釋
考慮以下程式碼:
int a = 1, b = 2, c = 3; int& arr[] = {a,b,c,8};
此程式碼不編譯。為什麼?讓我們來探索 C 標準來尋找答案。
C 標準指南
依 C 標準§8.3.2/4:
"不應有對引用的引用,不應有引用數組,也不應有指向引用。」
限制背後的原因
之所以有此限制,是因為引用不是傳統意義上的物件。它們本質上是物件的別名,不佔用內存,因此它們沒有位址。因此,聲明引用數組沒有什麼意義,因為沒有要引用的物件數組。
替代方法
如果需要模擬引用數組,您可以建立一個封裝引用的類,如下例所示:
struct cintref { cintref(const int & ref) : ref(ref) {} operator const int &() { return ref; } private: const int & ref; void operator=(const cintref &); }; int main() { int a=1,b=2,c=3; cintref arr[] = {a,b,c,8}; }
這種方法本質上模擬了一個數組透過創建cintref 類別的物件數組來引用。每個物件都保存對對應整數變數的參考。
以上是為什麼不能在 C 中宣告引用數組?的詳細內容。更多資訊請關注PHP中文網其他相關文章!