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