C++中雙冒號::是運算子中等級最高的,它分為三種:global scope(全域性作用域符),用法(::name);class scope(類作用域符),用法(class::name);namespace scope(名稱空間作用域符),用法(namespace::name)。
1、類作用域,用來標明類的變數、函式。C++為避免不同的類有相同的成員而採用作用域的方式進行區分,eg:A,B表示兩個類,在A,B中都有成員member,那麼:A::member表示A中的成員member,B::member表示B中的成員member。
2、名稱空間作用域,用來註明所使用的類、函式屬於哪一個名稱空間的。例如:std::cout << "Hello World" << std::endl。
3、全域性作用域,用來區分區域性、全域性的。最容易被忽視的一種,很多時候寫了一個全域性函式或者想要呼叫一個全域性函式,卻發現IDE或者Editor找不到該函式,原因是因為區域性函式與想要呼叫的全域性函式名字一樣,其實原因就是因為 【區域性變數/函式】 與 【全域性變數/函式】 的名字相同,IDE無法區分,這時候加上 :: 就可以呼叫到全域性函式,訪問到全域性變量了。
C++中雙冒號::是運算子中等級最高的,它分為三種:global scope(全域性作用域符),用法(::name);class scope(類作用域符),用法(class::name);namespace scope(名稱空間作用域符),用法(namespace::name)。
1、類作用域,用來標明類的變數、函式。C++為避免不同的類有相同的成員而採用作用域的方式進行區分,eg:A,B表示兩個類,在A,B中都有成員member,那麼:A::member表示A中的成員member,B::member表示B中的成員member。
2、名稱空間作用域,用來註明所使用的類、函式屬於哪一個名稱空間的。例如:std::cout << "Hello World" << std::endl。
3、全域性作用域,用來區分區域性、全域性的。最容易被忽視的一種,很多時候寫了一個全域性函式或者想要呼叫一個全域性函式,卻發現IDE或者Editor找不到該函式,原因是因為區域性函式與想要呼叫的全域性函式名字一樣,其實原因就是因為 【區域性變數/函式】 與 【全域性變數/函式】 的名字相同,IDE無法區分,這時候加上 :: 就可以呼叫到全域性函式,訪問到全域性變量了。