C 「 」 作用域符 雙冒號

2021-09-03 06:40:31 字數 1505 閱讀 2695

2023年12月16日 10:09:27 非長道 閱讀數:10837 標籤: c++

雙冒號

作用域

作用域符 更多

個人分類: c/c++

:: 是作用域符,是運算子中等級最高的,它分為三種:

1)global scope(全域性作用域符),用法(::name)

2)class scope(類作用域符),用法(class::name)

3)namespace scope(命名空間作用域符),用法(namespace::name)

他們都是左關聯(left-associativity),他們的作用都是為了更明確的呼叫你想要的變數:

1.如在程式中的某一處你想呼叫全域性變數a,那麼就寫成::a;(也可以是全域性函式)

2.如果想呼叫class a中的成員變數a,那麼就寫成a::a;

3.另外乙個如果想呼叫namespace std中的cout成員,你就寫成std::cout(相當於using namespace std;cout)意思是在這裡我想用cout物件是命名空間std中的cout(即就是標準庫裡邊的cout);

他們算是c++中的基礎,如果運用的好的話,你程式的出錯率也許會降很多,o~~~~~~~~~

例:宣告了乙個類a,類a裡宣告了乙個成員函式void f(),但沒有在類的宣告裡給出f的定義,那麼在類外定義f時, 就要寫成void a::f(),表示這個f()函式是類a的成員函式。

(2)直接用在全域性函式前,表示是全域性函式

例:在vc裡,你可以在呼叫api 函式裡,在api函式名前加 ::

(3)表示引用成員函式及變數,作用域成員運算子

例:system::math::sqrt() 相當於system.math.sqrt();

三、c++為例避免不同的類有名稱相同的成員而採用作用域的方式進行區分。

如:a,b表示兩個類,在a,b中都有成員member。那麼

a::member就表示類a中的成員member,b::member就表示類b中的成員member。

charzhou; //全域性變數

voidsleep()

比如宣告了乙個類a,類a裡宣告了乙個成員函式voidf(),但沒有在類的宣告裡給出f的定義,那麼在類外定義f時,就要寫成voida::f(),表示這個f()函式是類a的成員函式。例如

classca ;

//那麼在實現這個函式時,必須這樣書寫:

intca::add(inta, intb)

//另外,雙冒號也常常用於在類變數內部作為當前類例項的元素進行表示,比如:

intca::add(inta)

//表示當前類例項中的變數ca_var。

C 「 」 作用域符 雙冒號

是作用域符,是運算子中等級最高的,它分為三種 1 global scope 全域性作用域符 用法 name 2 class scope 類作用域符 用法 class name 3 namespace scope 命名空間作用域符 用法 namespace name 他們都是左關聯 left asso...

C 的雙冒號(域解析符)

在c 中,表示 作用域識別符號 或者叫 作用域分解 運算子 比如 類名 函式名 這樣是表示該函式是該 類的成員函式,但是象下面這種寫法 函式名 作用域識別符號 前面沒有任何物件,代表後面的物件或函式是全域性的。的作用非常簡單,就是當區域性變數和全域性變數名字重疊的時候,指定某變數一定是來自全域性變數...

C 的雙冒號(域解析符)

在c 中,表示 作用域識別符號 或者叫 作用域分解 運算子 比如 類名 函式名 這樣是表示該函式是該 類的成員函式 但是象下面這種寫法 函式名 作用域識別符號 前面沒有任何物件,代表後面的物件或函式是全域性的。的作用非常簡單,就是當區域性變數和全域性變數名字重疊的時候,指定某變數一定是來自全域性變數...