c++中的雙冒號 ::第一種,類作用域,用來標明類的變數、函式
human::setname(char* name);
第二種,命名空間作用域,用來註明所使用的類、函式屬於哪乙個命名空間的
std::cout << "hello world" << std::endl;
第三種,全域性作用域,用來區分區域性、全域性的。最容易被忽視的一種,很多時候寫了乙個全域性函式或者想要呼叫乙個全域性函式,卻發現ide或者editor找不到該函式,原因是因為區域性函式與想要呼叫的全域性函式名字一樣,然後找了很久也找不到原因,甚至放棄解決的。其實原因就是因為 【區域性變數/函式】 與 【全域性變數/函式】 的名字相同,ide無法區分,這時候加上 :: 就可以呼叫到全域性函式,訪問到全域性變數了。舉個例子:
linux下串列埠開啟、關閉的api
// fcntl.**件下的全域性函式open
open (const char *__path, int __oflag, ...)
// unistd.**件下的全域性函式
extern int close (int __fd);
由於每次找api是一件非常浪費coding時間,而且是沒多大意義的事情,我現在要將這個函式封裝成乙個我自己的個人串列埠庫wzserialport.h、wzserialport.cpp
// wzserialport.h
class wzserialport
public:
bool open();
void close();
注意以下的cpp檔案,如果沒有 :: 則會報錯誤,因為wzserialport庫中有函式open和close,跟全域性函式open和close名字相同,如果不做全域性與區域性的區分,則無法呼叫到全域性函式
// wzserialport.cpp
bool wzserialport::open()
if( ::open(portname,o_rdwr|o_noctty|o_nonblock) != -1 )
return true;
else
return false;
void wzserialport::close()
::close(fd);
總結
c 中 雙冒號作用
1 作用域符號 的前面一般是類名稱,後面一般是該類的成員名稱,c 為例避免不同的類有名稱相同的成員而採用作用域的方式進行區分 如 a,b表示兩個類,在a,b中都有成員member。那麼 a member 就表示 類a 中的 成員member b member 就表示 類b 中的 成員member 2...
C 中的單冒號與雙冒號
1.單冒號 用法 1 表示機構內位域的定義 即該變數佔幾個bit空間 typedef struct 2 建構函式後面的冒號起分割作用,是類給成員變數賦值的方法,初始化列表,更適用於成員變數的常量const型。struct 3 public 和private 後面的冒號,表示後面定義的所有成員都是公有...
c 中冒號( )和雙冒號( )的用法
1.冒號 用法 1 表示機構內位域的定義 即該變數佔幾個bit空間 typedef struct 2 建構函式後面的冒號起分割作用,是類給成員變數賦值的方法,初始化列表,更適用於成員變數的常量const型。struct 3 public 和private 後面的冒號,表示後面定義的所有成員都是公有或...