C++语言基础 例程 命名空间的使用

简介: 贺老师的教学链接  本课讲解重名问题的解决//出错的程序#include <iostream>#include <math.h>using namespace std;class point{public: double x; double y;};double distance(point p1,point p2){

贺老师的教学链接  本课讲解


重名问题的解决

//出错的程序
#include <iostream>
#include <math.h>
using namespace std;
class point
{
public:
    double x;
    double y;
};


double distance(point p1,point p2)
{
    double d=sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
    return d;
}


int main()
{
    point p1= {3,5},p2= {6,9};
    cout<<distance(p1,p2);
}

//改法1:std中的名称加限制
#include <iostream>
#include <math.h>
class point
{
public:
    double x;
    double y;
};


double distance(point p1,point p2)
{
    double d=sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
    return d;
}


int main()
{
    point p1= {3,5},p2= {6,9};
    std::cout<<distance(p1,p2);  //出除了using namespace std,而在std中的cout前加上std::
}

//改法2:本地名称加限定
#include <iostream>
#include <math.h>
using namespace std;
class point
{
public:
    double x;
    double y;
};


double distance(point p1,point p2)
{
    double d=sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
    return d;
}


int main()
{
    point p1= {3,5},p2= {6,9};
    cout<<::distance(p1,p2);  //保留using namespace std,而在distance前加上::,表示distance是“本地的”
    return 0;
}

//改法3:本地改名避冲突
#include <iostream>
#include <math.h>
using namespace std;
class point
{
public:
    double x;
    double y;
};


double dist(point p1,point p2)   //本地函数改名
{
    double d=sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
    return d;
}


int main()
{
    point p1= {3,5},p2= {6,9};
    cout<<dist(p1,p2);
    return 0;
}

//改法4:明确定义本地的命名空间
#include <iostream>
#include <math.h>
using std::cout;
namespace mypoint
{
class point
{
public:
    double x;
    double y;
};
double distance(point p1,point p2)
{
    double d=sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
    return d;
}
};


int main()
{
    mypoint::point p1= {3,5},p2= {6,9};
    cout<<distance(p1,p2);   //不使用std命名空间
    return 0;
}


目录
相关文章
|
4月前
|
C++
C++ 语言异常处理实战:在编程潮流中坚守稳定,开启代码可靠之旅
【8月更文挑战第22天】C++的异常处理机制是确保程序稳定的关键特性。它允许程序在遇到错误时优雅地响应而非直接崩溃。通过`throw`抛出异常,并用`catch`捕获处理,可使程序控制流跳转至错误处理代码。例如,在进行除法运算或文件读取时,若发生除数为零或文件无法打开等错误,则可通过抛出异常并在调用处捕获来妥善处理这些情况。恰当使用异常处理能显著提升程序的健壮性和维护性。
76 2
|
4月前
|
算法 C语言 C++
C++语言学习指南:从新手到高手,一文带你领略系统编程的巅峰技艺!
【8月更文挑战第22天】C++由Bjarne Stroustrup于1985年创立,凭借卓越性能与灵活性,在系统编程、游戏开发等领域占据重要地位。它继承了C语言的高效性,并引入面向对象编程,使代码更模块化易管理。C++支持基本语法如变量声明与控制结构;通过`iostream`库实现输入输出;利用类与对象实现面向对象编程;提供模板增强代码复用性;具备异常处理机制确保程序健壮性;C++11引入现代化特性简化编程;标准模板库(STL)支持高效编程;多线程支持利用多核优势。虽然学习曲线陡峭,但掌握后可开启高性能编程大门。随着新标准如C++20的发展,C++持续演进,提供更多开发可能性。
86 0
|
2月前
|
算法 C++
2022年第十三届蓝桥杯大赛C/C++语言B组省赛题解
2022年第十三届蓝桥杯大赛C/C++语言B组省赛题解
50 5
|
2月前
|
安全 程序员 编译器
【C++】如何巧妙运用C++命名空间:初学者必备指南
【C++】如何巧妙运用C++命名空间:初学者必备指南
|
2月前
|
存储 编译器 C语言
深入计算机语言之C++:类与对象(上)
深入计算机语言之C++:类与对象(上)
|
2月前
|
存储 分布式计算 编译器
深入计算机语言之C++:C到C++的过度-2
深入计算机语言之C++:C到C++的过度-2
|
2月前
|
编译器 Linux C语言
深入计算机语言之C++:C到C++的过度-1
深入计算机语言之C++:C到C++的过度-1
|
4月前
|
程序员 C++ 开发者
C++命名空间揭秘:一招解决全局冲突,让你的代码模块化战斗值飙升!
【8月更文挑战第22天】在C++中,命名空间是解决命名冲突的关键机制,它帮助开发者组织代码并提升可维护性。本文通过一个图形库开发案例,展示了如何利用命名空间避免圆形和矩形类间的命名冲突。通过定义和实现这些类,并在主函数中使用命名空间创建对象及调用方法,我们不仅解决了冲突问题,还提高了代码的模块化程度和组织结构。这为实际项目开发提供了宝贵的参考经验。
66 2
|
3月前
|
程序员 C++ 容器
C++编程基础:命名空间、输入输出与默认参数
命名空间、输入输出和函数默认参数是C++编程中的基础概念。合理地使用这些特性能够使代码更加清晰、模块化和易于管理。理解并掌握这些基础知识,对于每一个C++程序员来说都是非常重要的。通过上述介绍和示例,希望能够帮助你更好地理解和运用这些C++的基础特性。
46 0
|
3月前
|
JavaScript 前端开发 测试技术
一个google Test文件C++语言案例
这篇文章我们来介绍一下真正的C++语言如何用GTest来实现单元测试。
25 0