详解C++中的双冒号 ::

 更新时间:2020年09月10日 11:14:28   作者:有梦想的伟仔  
这篇文章主要介绍了C++中的双冒号 ::,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

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);
}

总结

到此这篇关于C++中的双冒号 ::的文章就介绍到这了,更多相关C++中的 ::内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++中实现OpenCV图像分割与分水岭算法

    C++中实现OpenCV图像分割与分水岭算法

    分水岭算法是一种常用的图像区域分割法,本文主要介绍了OpenCV图像分割与分水岭算法,使用C++实现,具有一定的参考价值,感兴趣的可以了解一下
    2021-06-06
  • C++实现贪吃蛇游戏

    C++实现贪吃蛇游戏

    这篇文章主要为大家详细介绍了C++实现贪吃蛇游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-12-12
  • C++调用tensorflow教程

    C++调用tensorflow教程

    今天小编就为大家分享一篇关于C++调用tensorflow教程,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • c++中为什么可以通过指针或引用实现多态详解

    c++中为什么可以通过指针或引用实现多态详解

    这篇文章主要给大家介绍了关于c++中为何可以通过指针或引用实现多态,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 详解Dev C++使用教程(使用Dev C++编写C语言程序)

    详解Dev C++使用教程(使用Dev C++编写C语言程序)

    这篇文章主要介绍了详解Dev C++使用教程(使用Dev C++编写C语言程序),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • C++初阶之list的模拟实现过程详解

    C++初阶之list的模拟实现过程详解

    在C++中我们经常使用STL,那个在那些我们常用的数据结构vector,list的背后,又是如何实现的呢?这篇文章主要给大家介绍了关于C++初阶之list的模拟实现的相关资料,需要的朋友可以参考下
    2021-08-08
  • 图文详解C语言位运算基础知识

    图文详解C语言位运算基础知识

    这篇文章主要以图文结合的方式为大家详细介绍了C语言位运算基础知识,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • C语言 二级指针详解及示例代码

    C语言 二级指针详解及示例代码

    本文主要介绍C语言 二级指针,这里整理了C语言中二级指针的基础资料并附有示例代码和实现结果,帮助大家学习理解相关知识,有学习的朋友可以参考下
    2016-08-08
  • 如何用C++实现双向循环链表

    如何用C++实现双向循环链表

    本篇文章是对用C++实现双向循环链表的方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • 深入解析C++编程中对设计模式中的策略模式的运用

    深入解析C++编程中对设计模式中的策略模式的运用

    这篇文章主要介绍了C++编程中对设计模式中的策略模式的运用,需要的朋友可以参考下
    2016-03-03

最新评论