什麼時候是'標識符'在C++中稱爲'名稱'?我主要是讀的是,術語`名稱在實施例」用於過度而不是‘標識符’爲:什麼時候在C++中的'標識符''名稱'?
struct S { int i };
S thing1;
在這種情況下,是一個thing1
名稱或 IDENTIFER ?或者術語「標識符」和「名稱」是否類似?在C中,引用一個對象時是否使用了「名稱」這個術語?
什麼時候是'標識符'在C++中稱爲'名稱'?我主要是讀的是,術語`名稱在實施例」用於過度而不是‘標識符’爲:什麼時候在C++中的'標識符''名稱'?
struct S { int i };
S thing1;
在這種情況下,是一個thing1
名稱或 IDENTIFER ?或者術語「標識符」和「名稱」是否類似?在C中,引用一個對象時是否使用了「名稱」這個術語?
在C++中,術語標識符只是數字,字母和_
的序列,不以數字開頭。這樣的標識符可以出現在任何地方,並且不必識別任何東西,儘管它的名字(沒有雙關語意)。
術語名稱將含義與某種語法結構相關聯。 C++的規範說以下語法的一個構造是一個名字,如果它是指一個實體(一個對象,一個類,一個模板等)或一個標籤(在這裏你可以跳到與goto
)
identifier <...>
,operator-function-id <...>
和literal-operator-id <...>
,如在foo <int>
)。operator type
,如在operator int
)operator @
,如在operator +
)operator "" identifier
,如在operator "" _foo
)對於這些構造中的每一個,名稱與其他名稱相同時的規則的定義不同:對於標識符,兩個名稱ar e同樣的順序是相同的(這只是一個詞法比較)。對於轉換函數ID的名稱,如果使用的類型是相同類型(因此這是一個語義比較),它們是相同的。
正如你在字面運營商ID的例子看,非終端標識符可以出現在地方語法它是不是一個名字。因此,並非每個標識符都是名稱,並非每個名稱都是標識符。在模板標識的示例中,我們使用了名稱的嵌套使用。分別在<...>
之前的結構是再次命名的,因爲它們表示已聲明的模板。
非常簡潔和最準確的描述的區別。 –