c語言中雙冒號意思 詳解C 中的雙冒號

2021-10-13 01:41:38 字數 1108 閱讀 7868

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 後面的冒號,表示後面定義的所有成員都是公有或...