一、双冒号(::)用法

1.表示“域操作符”

例:声明了一个类A,类A里声明了一个成员函数void f(),但没有在类的声明里给出f的定义,那么在类外定义f时, 就要写成void A::f(),表示这个f()函数是类A的成员函数。

2.直接用在全局函数前,表示是全局函数

例:在VC里,你可以在调用API 函数里,在API函数名前加::

3.表示引用成员函数及变量,作用域成员运算符

例:System::Math::Sqrt() 相当于System.Math.Sqrt()

4.命名空间作用域符,即直接用在全局函数前,表示是全局函数 
        在运算符等级中属于最高级的!
        using namespace 命名空间名(如,abc);

表示在以下程序代码中所使用的标示符(如果此标示符在abc中定义)是abc中的,包括类型名(类),变量名,函数名,对象名。
        using abc::标示符(i);
        只表示在以下代码中使用的标示符i是abc中的。
        如果你要使用abc中的多个标示符的话,你就只能用
        using abc::a;
        using abc::b;
        using abc::c;
        ...
        等一个一个列举出来!
        当然用using 语句是比较方便的,但是不安全
        (1)using namespace;万一不同的两个命名空间中使用了同名的标示符,系统则不能判断,这个标示符是属于哪个命名空间的;

(2)using abc::;万一你的程序中也用到了一个函数(函数名与abc中的这个函数同名),那么系统也不能判断你使用的是abc中的那个函数,还是本程序中的那个函数;
        最安全的办法(当然也是最繁琐的)就是,每当你用到一个变量(函数...)时,你都要明确他的来历(即属于哪个命名空间)除非它没有命名空间
        例如:

#include <iostream>
int main ()
{
std::cout << "hello, world!" << std::endl;
}

这里就用到了iostream文件中的两个对象(cout,endl),因为C++标准库中绝大部分的函数,对象...都放在了命名空间std中
所以
        上面的代码就等同于

#include <iostream>
using std::cout;
using std::endl;
int main ()
{
cout << "hello, world!" << endl;
}
#include <iostream>
using namespace std;
int main ()
{
cout << "hello, world!" << endl;
}

重新举个例子,再加以说明:

#include <iostream>
#include <string>
int main ()
{int a;std::string b;std::cin >> a;std::cin >> b;std::cout << "hello, world!" << std::endl;return 0;
}

1)using std::;

#include <iostream>
#include <string>
using std::cin;
using std::endl;
using std::string;
int main ()
{int a;string b;cin >> a;cin >> b;std::cout << "hello, world!" << endl; //注意cout没用用usingreturn 0;
}

2)using namespace ;

#include <iostream>
#include <string>
using namespace std;
int main ()
{int a;string b;cin >> a;cin >> b;cout << "hello, world!" << endl;return 0;
}

其中cout endl cin string都是std中的!

C语言 “::“ 双冒号的用法相关推荐

  1. java lambda 两个冒号_java lambda 表达式中的双冒号的用法说明 ::

    双冒号运算就是java中的[方法引用],[方法引用]的格式是 类名::方法名 注意是方法名哦,后面没有括号"()"哒.为啥不要括号,因为这样的是式子并不代表一定会调用这个方法.这种 ...

  2. JAVA中冒号和问号的顺序_c语言问号冒号的用法

    c语言问号冒号的用法 有些信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位.例如在存放一个开关量时,只有0和1两种状态,用一位二进位即可.下面小编来为大家介绍c语言问号冒号的用法. ...

  3. python中双冒号(::)的用法

    Python中::(双冒号)的用法,有需要的朋友可以参考下. 1."没什么首次没有为第二个,跳了三个".它得到的切片序列的每一个第三个项目. 扩展片是你想要的.新在Python 2 ...

  4. java零碎要点013---java lambda 表达式中的双冒号的用法 ::

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 双冒号运算就是Java中的[方法引用],[方法引用]的格式是 类名::方法名 注意是方法名哦,后面 ...

  5. java中双冒号的用法

    java中双冒号的使用,即方法引用 构造器调用 Class类::new 特定对象的方法调用 instance::method 类的静态方法调用 Class::static method 任意对象的方法 ...

  6. 浅谈c语言问号冒号的用法

    转自:https://www.pinlue.com/article/2020/03/3100/5610073905913.html

  7. JAVA语言中冒号的用法。

    转自:http://www.pinlue.com/article/2019/04/0708/298565026302.html

  8. mysql 双冒号_jdk8新特性之双冒号 :: 用法及详解

    jdk8的新特性有很多,最亮眼的当属函数式编程的语法糖,本文主要讲解下双冒号::的用法. 概念 类名::方法名,相当于对这个方法闭包的引用,类似js中的一个function.比如: Function  ...

  9. java8 :: 用法 (JDK8 双冒号用法)

    JDK8中有双冒号的用法,就是把方法当做参数传到stream内部,使stream的每个元素都传入到该方法里面执行一下. 代码其实很简单: 以前的代码一般是如此的: public class Accep ...

最新文章

  1. 网络天才网页中文版_LVMH 旗下奢侈品电商 24S 的中文版正式上线,还有带来“双 11”优惠...
  2. SPOJ 375 树链剖分学习
  3. 偏差-方差权衡的理解
  4. php 删除文件时间,php删除文件后重建,文件创建时间(filectime)未变化怎么解决??...
  5. android byteBuffer的使用
  6. 只读副本和Spring Data第1部分:配置数据库
  7. 炫酷实用 7款jQuery/HTML5图片应用
  8. java 阻塞队列介绍
  9. linux中如何批量修改文件名
  10. RAII(Resource Acquisition Is Initialization:资源获取即初始化)
  11. 《Python简明教程》一
  12. android 360游戏sdk,360dev 单机游戏接入SDK
  13. 官方正式(简/繁/英/日/韩文) Windows XP sp3 下载
  14. 实习僧的字体加密破解
  15. 解决配置静态IP还是会出现动态IP地址的问题
  16. amr-nb linux 编译安装包,3GPP最新版本amr-nb编解码源代码
  17. 灵魂歌手 演唱:梁博
  18. node ncc 打包
  19. 前端浏览器常见兼容性问题及解决方案
  20. Ruby on Rails 的秘笈是什么?

热门文章

  1. SGM2019 简介
  2. 2019年个税怎么报,据说90%的人都员工的个税计算错了!
  3. 骁龙660鸿蒙系统,骁龙660性能解析:对比骁龙653/821胜算几何?
  4. rust油桶用什么打_腐蚀rust新手入门指南 游戏新萌拿好不谢!
  5. 皇后乐队--永不凋零的艳丽花朵
  6. 华为不同vlan直接通信
  7. 一盏提升效率的办公阅读台灯,意外成为了卧室氛围感神器
  8. 解析:微软收购诺基亚硬件或为Asha
  9. 展讯 Android12 设置 优化开发者模式内存页显示大小
  10. PS入门(1-6) 颜色的选取