8 3 宣告符的含義

2022-09-01 16:54:09 字數 1864 閱讀 3908

1

、宣告符列表出現在可選的(第7章)

decl-specifier-seq

(7.1

)之後。每個宣告符只能包含乙個

declarator-id

;它對被宣告的識別符號進行命名。除了特殊函式(

12.3, 12.4, 13.5

)宣告、模板特化或區域性特化(

14.7

)宣告之外,

declarator-id

中的unqualified-id

必須是簡單識別符號。此外,

declarator-id

只在以下情況才允許使用限定形式:在所屬類之外定義成員函式(

9.3)或靜態資料成員(

9.4);在所屬名字空間之外定義或顯式例項化函式或變數成員;在所屬名字空間之外定義已宣告的顯式特化;宣告其它類或名字空間的成員為友元函式(

11.4

)。一旦

declarator-id

被限定,那麼宣告必須指向在限定符所指的類或名字空間中宣告的成員,並且這個成員不能是通過使用宣告(

using declaration

)引入的成員(如在下面的**中關於

int b::f()

的定義)。[

注:如果限定符為全域性作用域解析操作符::,

declarator-id

指向在全域性名字空間作用域中宣告的名字。

]例如:

namespace a;};

namespace b

;int b::f()

main()

根據標準,不能對類或名字空間引入的名字進行定義。所以上述**中關於

int b::f()

的定義應該是非法的。然而

vc6能順利編譯此**,執行後

main

函式中a和b

的值都為0。

2、(decl-specifier-seq中的)

auto, static, extern, register, mutable, friend, inline, virtual,

或typedef

說明符直接作用於

init-declarator-list

中的每個

declarator-id

之上;declarator-id

的型別由

decl-specifier-seq

和它的declarator

共同決定。

3、因此,對於特定識別符號的宣告具有如下形式

t d其中t為

decl-specifier-seq,d

為宣告符。下面是確定此宣告中

declarator-id

的型別的遞迴過程。

4、首先,

decl-specifier-seq

確定了乙個型別。在宣告

t d中,宣告說明符序列

t確定了型別「

t」。例如:在宣告

int unsigned i;

中,型別說明符

int unsigned

確定了型別「

int unsigned

」(7.1.5

.2)。

5、對於宣告

t d,如果

d是乙個未修飾的識別符號,那麼此識別符號的型別就是「t」。

6、對於宣告

t d,如果

d具有形式

( d1 )

那麼被包含的

declarator-id

的型別與下述宣告所包含的

declarator-id

的型別相同:

t d1

括號並不改變內嵌

declarator-id

的型別,但卻能影響複雜宣告符的繫結。

12 5 1 宣告計算型別

12.5.1 宣告計算型別 清單 12.17 顯示了在 c 和 f 中的型別宣告。在 c 中,我們建立簡單的類,在 f 中,將使用乙個簡單的只有一種情況的差別聯合。listing 12.17 value of the computation in c and f c 的類是乙個簡單的不可變型別,儲存...

3 1 3 宣告可變值

3.1.3 宣告可變值 在 3.1.1 節,我們宣告過乙個整數型別值,let number 10。如果你很好奇,嘗試進行修改,可能會寫出類似 number 10。這不起作用,因為在 f 中,let 繫結之外的等於號只用於值的比較。雖然有效,但它可能會返回 false 除非 number 的值碰巧也是...

10 宣告式事務

1.程式設計式事務 由程式設計師程式設計事務控制 opensessionlnview程式設計式事務 2.宣告式事務 事務控制 已經由spring寫好,程式設計師只需要宣告出哪些方法需要進行事務控制和如何進行事務控制。這裡講解的是 註解配置事務,如果想去理解xml的同學 可以看看其它的 這裡只講解註解...