当前位置:   article > 正文

C++工作笔记-作用域(" :: ")的另一种玩法_c++写代码要加作用域吗

c++写代码要加作用域吗

当有要写的函数与STL里面重名时,如果不加作用域的话会报如下错误。

先说明下代码:

  1. template<typename T>
  2. void swap(T &a, T &b){
  3. cout << "调用了自己写的" << endl;
  4. T c = a;
  5. a = b;
  6. b = c;
  7. }
  8. void main(){
  9. int a = 1, b = 2;
  10. cout << "交换前:a:" << a << " b:" << b << endl;
  11. swap(a, b);
  12. cout << "交换后:a:" << a << " b:" << b << endl;
  13. getchar();
  14. }

运行截图如下


这里的解决方法有很多,一个是注释掉using namespace std;

还有一个就是加上::这个作用域,如下面这个代码

  1. #include <iostream>
  2. using namespace std;
  3. template<typename T>
  4. void swap(T &a, T &b){
  5. cout << "调用了自己写的" << endl;
  6. T c = a;
  7. a = b;
  8. b = c;
  9. }
  10. void main(){
  11. int a = 1, b = 2;
  12. cout << "交换前:a:" << a << " b:" << b << endl;
  13. ::swap(a, b);
  14. cout << "交换后:a:" << a << " b:" << b << endl;
  15. getchar();
  16. }

运行截图如下:


如果要用std就是std::swap


声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号