博客專欄

EEPW首頁 > 博客 > C++中的 ::

C++中的 ::

發(fā)布人:電子禪石 時間:2020-02-18 來源:工程師 發(fā)布文章
C++中的雙冒號 ::
第一種,類作用域,用來標明類的變量、函數(shù)
 Human::setName(char* name);
1
第二種,命名空間作用域,用來注明所使用的類、函數(shù)屬于哪一個命名空間的
 std::cout << "Hello World" << std::endl;
1
第三種,全局作用域,用來區(qū)分局部、全局的。最容易被忽視的一種,很多時候寫了一個全局函數(shù)或者想要調用一個全局函數(shù),卻發(fā)現(xiàn)IDE或者Editor找不到該函數(shù),原因是因為局部函數(shù)與想要調用的全局函數(shù)名字一樣,然后找了很久也找不到原因,甚至放棄解決的。其實原因就是因為 【局部變量/函數(shù)】 與  【全局變量/函數(shù)】 的名字相同,IDE無法區(qū)分,這時候加上 :: 就可以調用到全局函數(shù),訪問到全局變量了。
舉個例子:
Linux下串口打開、關閉的api
// fcntl.h文件下的全局函數(shù)open
open (const char *__path, int __oflag, ...)
// unistd.h文件下的全局函數(shù)
extern int close (int __fd);
12345
由于每次找api是一件非常浪費coding時間,而且是沒多大意義的事情,我現(xiàn)在要將這個函數(shù)封裝成一個我自己的個人串口庫WzSerialPort.h、WzSerialPort.cpp
// WzSerialPort.h
class WzSerialPort
{
public:
 // ...
 bool open();
 void close();
 // ...
};
123456789
注意以下的cpp文件,如果沒有 :: 則會報錯誤,因為WzSerialPort庫中有函數(shù)open和close,跟全局函數(shù)open和close名字相同,如果不做全局與局部的區(qū)分,則無法調用到全局函數(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);
}
————————————————

原文鏈接:https://blog.csdn.net/qq1623803207/article/details/89398435


*博客內容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權請聯(lián)系工作人員刪除。



關鍵詞: C++

相關推薦

技術專區(qū)

關閉