C++中的双冒号 ::

  • 第一种,类作用域,用来标明类的变量、函数
    ​
    	Human::setName(char* name);
    
    

  • 第二种,命名空间作用域,用来注明所使用的类、函数属于哪一个命名空间的
    	std::cout << "Hello World" << std::endl;
    

  • 第三种,全局作用域,用来区分局部、全局的。最容易被忽视的一种,很多时候写了一个全局函数或者想要调用一个全局函数,却发现IDE或者Editor找不到该函数,原因是因为局部函数与想要调用的全局函数名字一样,然后找了很久也找不到原因,甚至放弃解决的。其实原因就是因为 【局部变量/函数】 与 【全局变量/函数】 的名字相同,IDE无法区分,这时候加上 :: 就可以调用到全局函数,访问到全局变量了。

  • 例子:

    Linux下串口打开、关闭的api

    // fcntl.h文件下的全局函数open 
    open (const char *__path, int __oflag, ...)
    
    // unistd.h文件下的全局函数
    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);
    }
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值