詳解C++中的雙冒號 ::
C++中的雙冒號 ::第一種,類作用域,用來標明類的變量、函數(shù)
Human::setName(char* name);
第二種,命名空間作用域,用來注明所使用的類、函數(shù)屬于哪一個命名空間的
std::cout << "Hello World" << std::endl;
第三種,全局作用域,用來區(qū)分局部、全局的。最容易被忽視的一種,很多時候?qū)懥艘粋€全局函數(shù)或者想要調(diào)用一個全局函數(shù),卻發(fā)現(xiàn)IDE或者Editor找不到該函數(shù),原因是因為局部函數(shù)與想要調(diào)用的全局函數(shù)名字一樣,然后找了很久也找不到原因,甚至放棄解決的。其實原因就是因為 【局部變量/函數(shù)】 與 【全局變量/函數(shù)】 的名字相同,IDE無法區(qū)分,這時候加上 :: 就可以調(diào)用到全局函數(shù),訪問到全局變量了。舉個例子:
Linux下串口打開、關閉的api
// fcntl.h文件下的全局函數(shù)open open (const char *__path, int __oflag, ...) // unistd.h文件下的全局函數(shù) extern int close (int __fd);
由于每次找api是一件非常浪費coding時間,而且是沒多大意義的事情,我現(xiàn)在要將這個函數(shù)封裝成一個我自己的個人串口庫WzSerialPort.h、WzSerialPort.cpp
// WzSerialPort.h
class WzSerialPort
{
public:
// ...
bool open();
void close();
// ...
};
注意以下的cpp文件,如果沒有 :: 則會報錯誤,因為WzSerialPort庫中有函數(shù)open和close,跟全局函數(shù)open和close名字相同,如果不做全局與局部的區(qū)分,則無法調(diào)用到全局函數(shù)
// 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);
}
總結(jié)
到此這篇關于C++中的雙冒號 ::的文章就介紹到這了,更多相關C++中的 ::內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
c語言中回調(diào)函數(shù)的使用以及實際作用詳析
回調(diào)函數(shù)就是一個通過函數(shù)指針調(diào)用的函數(shù),如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個函數(shù),當這個指針被用來調(diào)用其所指向的函數(shù)時,我們就說這是回調(diào)函數(shù),這篇文章主要給大家介紹了關于c語言中回調(diào)函數(shù)的使用以及實際作用的相關資料,需要的朋友可以參考下2021-07-07
Qt5.9實現(xiàn)簡單的多線程實例(類QThread)
Qt開啟多線程,主要用到類QThread。用一個類繼承QThread,然后重新改寫虛函數(shù)run()。具有一定的參考價值,感興趣的可以了解一下2021-09-09
C++高并發(fā)內(nèi)存池的整體設計和實現(xiàn)思路
這篇文章主要介紹了C++高并發(fā)內(nèi)存池的整體設計和實現(xiàn)思路詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-07-07
Python與C++ 遍歷文件夾下的所有圖片實現(xiàn)代碼
這篇文章主要介紹了 Python與C++ 遍歷文件夾下的所有圖片實現(xiàn)代碼的相關資料,需要的朋友可以參考下2017-06-06

