C++ 命名空间 using声明使用示例详解

 更新时间:2022年12月06日 08:47:21   作者:老边  
这篇文章主要为大家介绍了C++ 命名空间 using声明使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

正文

c++在开发的过程当中需要使用到库函数,那么基于库函数的使用最初的流程是:1、include 相关的头文件,比如:iostream,string。 2、使用命名空间::库函数,比如:std::cin,std::cout,但是这样写总是有点麻烦的,所以可以尝试简化写法,就是using声明。

注意,这里的 :: 是作用域运算符,就是用来指向命名空间空间当中的方法的。

最初的c++代码写法

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

在这段代码当中,我们引入了iostream文件,cout和endl函数在iostream下的std当中,所以需要采用std::cout和std::endl的方法使用功能。

但是如果代码量巨增,这样的写法还是繁琐的,那么这个时候就可以采用using方法了,代码如下:

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

这段代码当中,比上面的代码多了两行using方法,但是如果下面使用cout和endl方法的语句比较多的话,就可以省力很多了。但是上面的写法必须把所有的需要的方法都显式的声明出来,比如:

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

这里声明了cout,但是在使用的过程当中,除了count还使用了endl,那么这个时候是会报错的

main.cpp: In function ‘int main()':
main.cpp:5:29: error: ‘endl' was not declared in this scope
    cout << "hello world" << endl;
                             ^
main.cpp:5:29: note: suggested alternative:
In file included from /usr/include/c++/4.8.2/iostream:39:0,
                 from main.cpp:1:
/usr/include/c++/4.8.2/ostream:564:5: note:   ‘std::endl'
     endl(basic_ostream<_CharT, _Traits>& __os)
     ^

那么有没有更加简单的写法,我们可以尝试直接using 整个std

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

那么我们来聊聊using到底是干什么的:

在聊using之前,先搞清楚一个概念,就是命名空间,命名空间是C++引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突。而作用域就是定义一个量,这个量在代码当中起作用的范围。

那么接下来看using,using是用来声明命名空间的,声明命名空间实际上就是把指定的标识符加载到当前的作用域当中,直接使用。

但是这里有几个思考的点:

1、在学习c++的时候有一类文件叫做头文件,就比如刚才案例当中导入的iostream,在这类文件当中尽量不要使用using,因为来回包括太多隐式的变量,容易导致变量冲突。

2、using声明的一定要是include加载的,所以要卸载include的后面。

3、using写在代码的不同位置,产生的效用也是不一样的,这个需要结合作用域来详细理解(挖个坑,后来填上)

4、个人感觉using std::cout 写法上确实比 using namespace std要繁琐,但是使用的变量更加精确,因为using namespace std调用命名空间std内定义的所有标识符,其实代码当中没有用到那么多。

关于using先总结这么多,更多关于C++ 命名空间using声明的资料请关注脚本之家其它相关文章!

相关文章

  • OpenCV实现简易标定板

    OpenCV实现简易标定板

    这篇文章主要为大家详细介绍了OpenCV实现简易标定板,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • C语言嵌入式实现支持浮点输出的printf示例详解

    C语言嵌入式实现支持浮点输出的printf示例详解

    这篇文章主要为大家介绍了C语言嵌入式实现支持浮点输出的printf示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • C语言中数组排序浅析

    C语言中数组排序浅析

    这篇文章主要为大家介绍了C语言算法练习中数组元素排序的四种类型,文中的示例代码讲解详细,对我们学习C语言有一定帮助,需要的可以参考一下
    2022-12-12
  • 探讨:程序在内存中的分配(常量,局部变量,全局变量,程序代码)问题

    探讨:程序在内存中的分配(常量,局部变量,全局变量,程序代码)问题

    本篇文章是对程序在的内存中分配(常量,局部变量,全局变量,程序代码)的问题进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C语言实现扫雷游戏详细代码

    C语言实现扫雷游戏详细代码

    这篇文章主要为大家详细介绍了C语言实现扫雷游戏的具体步骤和详细代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • Qt实现SqlTableModel映射组件应用小结

    Qt实现SqlTableModel映射组件应用小结

    在Qt中提供了QSqlTableModel模型类,它为开发者提供了一种直观的方式来与数据库表格进行交互,本文就来介绍一下Qt实现SqlTableModel映射组件应用小结,感兴趣的可以了解一下
    2023-12-12
  • Qt Creator使用教程的简单说明

    Qt Creator使用教程的简单说明

    如今 Qt Creator 功能十分强大了,包含项目模板生成、代码编辑、UI 设计、QML 界面编辑、调试程序、上下文帮助等丰富功能,本文就详细的介绍一下如何使用
    2021-08-08
  • C语言实现快速排序

    C语言实现快速排序

    快速排序不一定是稳定排序,这篇文章主要为大家详细介绍了C语言实现快速排序算法,具有一定的参考价值,感兴趣的同学可以借鉴阅读
    2023-03-03
  • c语言获取文件大小的示例

    c语言获取文件大小的示例

    在C语言中测试文件的大小,主要使用二个标准函数,下面是使用示例,需要的朋友可以参考下
    2014-02-02
  • C++实现扫雷小游戏(控制台)

    C++实现扫雷小游戏(控制台)

    这篇文章主要为大家详细介绍了C++实现扫雷小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05

最新评论