命名空间函数c++ 命名空间 namespace_weixin_30474613的博客-程序员秘密

技术标签: c/c++  

文章结束给大家来个程序员笑话:[M]

    

定名空间要解决不同代码部分之间的定名冲突的问题。

    举个例子来说明吧!为了让同名函数能调用,我们采取的是将函数重载的方法,而另外的解决放方法就是把不同的函数放在不同的定名空间里,调用时只须要告知系统要调用在哪个定名空间即可!

    能放在定名空间里的不仅是函数,我认为什么都可以!

    (一)定名空间的用法

    看完这个例子就知道定名空间怎么用了!在定名空间里Records 里放了一个类,以及类中成员函数的实现!

    namespace Records //Records是定名空间名,可以随便定名

    {

  内容

    }

  Records 里放什么都可以只要c++允许,像类,结构体,变量等!

    看完这个例子就知道定名空间怎么用了!在定名空间里Records 里放了一个类,以及类中成员函数的实现!

    #include <iostream>

    using namespace std;

    namespace Records 

 {

  const int kDefaultStartingSalary = 30000;

  class Employee

    {

    public:

      Employee();

      void     promote(int inRaiseAmount = 1000);

      void     demote(int inDemeritAmount = 1000);

      void     hire();     // hires or re-hires the employee

      void     fire();     // dismisses the employee

      void     display();  // outputs employee info to the console

      // Accessors and setters

      void          setFirstName(std::string inFirstName);

      std::string   getFirstName();

      void          setLastName(std::string inLastName);

      std::string   getLastName();

      void          setEmployeeNumber(int inEmployeeNumber);

      int           getEmployeeNumber();

      void          setSalary(int inNewSalary);

      int           getSalary();

      bool          getIsHired();

    private: 

      std::string   mFirstName;

      std::string   mLastName;

      int           mEmployeeNumber;

      int           mSalary;

      bool          fHired;

    };

  Employee::Employee()

  {

    mFirstName = "";

    mLastName = "";

    mEmployeeNumber = -1;

    mSalary = kDefaultStartingSalary;

    fHired = false;

  }

  void Employee::promote(int inRaiseAmount)

  {

    setSalary(getSalary() + inRaiseAmount);

  }

  void Employee::demote(int inDemeritAmount)

  {

    setSalary(getSalary() - inDemeritAmount);

  }

  void Employee::hire()

  {

    fHired = true;

  }

  void Employee::fire()

  {

    fHired = false;

  }

  void Employee::display()

  {

    cout << "Employee: " << getLastName() << ", " << getFirstName() << endl;

    cout << "-------------------------" << endl;

    cout << (fHired ? "Current Employee" : "Former Employee") << endl;

    cout << "Employee Number: " << getEmployeeNumber() << endl;

    cout << "Salary: $" << getSalary() << endl;

    cout << endl;

  }

  // Accessors and setters

  void Employee::setFirstName(string inFirstName)

  {

    mFirstName = inFirstName;

  }

  string Employee::getFirstName()

  {

    return mFirstName;

  }

  void Employee::setLastName(string inLastName)

  {

    mLastName = inLastName;

  }

  string Employee::getLastName()

  {

    return mLastName;

  }

  void Employee::setEmployeeNumber(int inEmployeeNumber)

  {

    mEmployeeNumber = inEmployeeNumber;

  }

  int Employee::getEmployeeNumber()

  {

    return mEmployeeNumber;

    每日一道理
灯,带有一种明亮的光,每当深夜来临,是它陪伴着你,如此默默无闻。它是平凡的,外表华丽与否,那都是一样的,珍珠点缀,水晶加饰的灯它只能用以装饰,来满足人们的虚荣心,比起这,普普通通的日光灯是幸运的,因为它照明的本性没有改变,如同生活中的一部分人平平凡凡却实实在在。

  }

  void Employee::setSalary(int inSalary)

  {

    mSalary = inSalary;

  }

  int Employee::getSalary()

  {

    return mSalary;

  }

  bool Employee::getIsHired()

  {

    return fHired;

  }

    }

    int main ()

    {

  cout << "Testing the Employee class." << endl;

 Records::Employee emp;

  emp.setFirstName("Marni");

  emp.setLastName("Kleper");

  emp.setEmployeeNumber(71);

  emp.setSalary(50000);

  emp.promote();

  emp.promote(50);

  emp.hire();

  emp.display();

 return 0;

    }

    在调用定名空间里的内容要加上(定名空间名::),这里要将类Employee实例化,就是采用的 Records::Employee emp,建立了对象emp

    (二)定名空间的嵌套

    定名空间的嵌套应用的最多的还是作用域运算符,告知系统要调用的在那个定名空间里嵌套的定名空间里能找到要调用内容!

    上面举一个实例,我相信大家一看就会明白!

    在定名空间以外定义函数,函数返回类型如果是自定义类型的,必须应用定名空间的限定修饰;同时,函数名同样须要这类限定修饰。但是对于函数参数表和函数体外部的定名空间成员名字都可以应用冗长情势。

    #include <iostream>

    using namespace std;

    namespace myspace1 

    {

    double const PI=3.14;

    double nval1(1.2),nval2(1.3);

    double max(double x, double y);

 

    namespace myspace2   //在定名空间myspace1内定义定名空间myspace2

    {

    double multi(double x);

    double division(double x)

    {

    return PI/x; 

    }

    }

    }

    int main() 

    {

    cout<<please input two integer:;

    cin>>myspace1::nval1>>myspace1::nval2;

    cout<<the maxnum is<<myspace1::max(myspace1::nval1,myspace1::nval2)<<endl;

    cout<<the accumulation is :<<myspace1::myspace2::multi(myspace1::nval1)<<endl;//应用定名空间里嵌套的定名空间

    cout<<"the quotient is:<<myspace1::myspace2::division(myspace1::nval2)<<endl;

    }

 

    double myspace1::max(double x,double y) 

    {

    return x>y?x:y;

    }

 

    double myspace1::myspace2::multi(double x) 

    {

    return PI*x; 

    }

    相信通过这个例子可以大家可以知道定名空间的嵌套是怎么用的!

    感谢各位看客看我写的内容,因为你的浏览每次都促进我不断写更好的内容和大家一同分享,要知道你是我成长的动力!

文章结束给大家分享下程序员的一些笑话语录: 打赌
飞机上,一位工程师和一位程序员坐在一起。程序员问工程师是否乐意和他一起玩一种有趣的游戏。工程师想睡觉,于是他很有礼貌地拒绝了,转身要睡觉。程序员坚持要玩并解释说这是一个非常有趣的游戏:"我问你一个问题,如果你不知道答案,我付你5美元。然后你问我一个问题,如果我答不上来,我付你5美元。"然而,工程师又很有礼貌地拒绝了,又要去睡觉。  程序员这时有些着急了,他说:"好吧,如果你不知道答案,你付5美元;如果我不知道答案,我付50美元。"果然,这的确起了作用,工程师答应了。程序员就问:"从地球到月球有多远?"工程师一句话也没有说,给了程序员5美元。  现在轮到工程师了,他问程序员:"什么上山时有三条腿,下山却有四条腿?"程序员很吃惊地看着工程师,拿出他的便携式电脑,查找里面的资料,过了半个小时,他叫醒工程师并给了工程师50美元。工程师很礼貌地接过钱又要去睡觉。程序员有些恼怒,问:"那么答案是什么呢?"工程师什么也没有说,掏出钱包,拿出5美元给程序员,转身就去睡觉了。

转载于:https://www.cnblogs.com/xinyuyuanm/archive/2013/05/21/3091870.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30474613/article/details/99044137

智能推荐

JSR303——数据校验&统一响应数据格式_jsr date 校验_听着晴天看星晴的博客-程序员秘密

1.JSR303简介适用于服务器端的数据校验 Java为Bean数据合法性校验所提供的标准框架 Spring MVC支持JSR 303标准的校验框架 JSR 303通过在Bean属性上标注校验注解指定校验规则 Spring本身没有提供JSR 303的实现,他是由Hibernate Validator 实现与spring整合的2.JSR303相关常用的注解@Null(message) :被注释的元素必须为null @NotNull(message :被注释的元素必须不为null @...

Linux内核编译和安装_linux下编译和安装内核,不会导致冲突吗_摩力克的博客-程序员秘密

第一步:下载内核要编译内核就必须有新的内核,可以从Kernel官方网站www.kernel.org上下载最新的内核源码,解压,进入目录;第二步:清除垃圾这一步:一般是在就内核重新编译时使用,在编译新的内核是不需要;make clean及make mrproper;第三步:进行内核裁减配置内核裁减配置的原则: 从实际出发。 如:根据支持的硬件设备来决定需要选择的驱

Android视频编辑SDK--RDVECore来自锐动的无UI,高度抽象化API_cuimei1071的博客-程序员秘密

1RDVECore功能概述 RDVECore是锐动推出的无UI,高度抽象化API的视频编辑SDK,支持以下功能:1.1丰富的编辑功能 RDVECore包含了丰富的基础功能,对于编辑中的视频、图片、...

利用tf-idf计算文本相似度_tf-idf文本相似度计算_丁叔叔的博客-程序员秘密

文本相似度计算余弦相似度计算个体间的相似性,即将两个个体的特征向量化,通过余弦公式计算两者之间的相似性。

计算机编程 常用术语英语词汇大全 记忆_计算机引用英语_BRUCE_WUANG的博客-程序员秘密

第一部分、计算机算法常用术语中英对照Data Structures基本数据结构Dictionaries字典Priority Queues堆Graph Data Structures图Set Data Structures集合Kd-Trees线段树Numerical Problems数值问题Solving Lin

随便推点

彻底解决LSASS.exe进程病毒!_canfly20008的博客-程序员秘密

lsass.exe是一个系统进程,用于微软Windows系统的安全机制。它用于本地安全和登陆策略。注意:lsass.exe也有可能是Windang.worm、irc.ratsou.b、Webus.B、MyDoom.L、Randex.AR、Nimos.worm创建的,病毒通过软盘、群发邮件和P2P文件共享进行传播。 进程文件: lsass or lsass.exe 进程名称: Local Secur...

将Htc Vive内容,转化为全景视频的步骤_htc vive 视频录制_姚小宝不吃草的博客-程序员秘密

目前的htc vive内容开发,使用2018.4LTS版本。录屏的工具使用的是官方出品的Unity Recorder注意:Unity Recorder在资源商店里的版本,已经过时并下架。因此本示例中使用的版本,来自PackageManager ,版本2.0.31.打开窗口2.官方的录制工具,可以录制动画文件,序列帧,传统视...

fineReport自学V2答案and常用案例汇总_帆软报表习题_乐乐呀168的博客-程序员秘密

这次不说废话,直接上干货。就一个字“干”就完了。finereport 入门视频 and 帮助文档 andfinereport 入门练习题V2习题答案及常用案例汇总

jsessionid和jwt_怎样实现登录?| Cookie or JWT_weixin_39651735的博客-程序员秘密

先问小伙伴们一个问题,登录难吗?“登录有什么难得?输入用户名和密码,后台检索出来,校验一下不就行了。”凡是这样回答的小伙伴,你明显就是产品思维,登录看似简单,用户名和密码,后台校验一下,完事了。但是,登录这个过程涵盖的知识点是非常多的,绝不是检索数据,校验一下这么简单的事。那么登录都要哪些实现方式呢?i最传统的就要是Cookie-Session这种方式了,最早的登录方式都是这样实现的。但是随着手机...

Android_自定义双向SeekBar_seekbar双向_CodeCopyer的博客-程序员秘密

目标:双向拖动的自定义View国际惯例先预览后实现我们要实现的就是一个段位样式的拖动条,用来做筛选条件用的, 信心的朋友可能会发现微信设置里面有个一个通用字体的设置, 拖动然后改变字体大小;这个相对比微信那个的自定义view算是一个扩展,因为我们是双向滑动,这个多考虑的一点就是手指拖动的是哪一个滑动块!我们先看下GIF预览,然后我们今天就一步步实现这个小玩意…实现步骤自定义属性的抽取view

自定义封装Qt柱状图类,实现数据动态更新和鼠标数值显示_qt动态柱状图_foxmoke的博客-程序员秘密

最近有个使用Qt动态创建柱状图的需求,使用Qt中的图表类Qchart封装一个自定义柱状图类,该类需要完成三点需求:1、支持X轴和Y轴的同时动态输入,即表中X轴条柱个数和Y轴数值动态变化;2、X轴条柱个数不变,动态刷新Y轴对应各个条柱数值。3、在柱状图显示时,支持鼠标悬停时显示条柱数值。【思路】1、考虑自定义这个类如何在主窗口中的展示,在类似使用QHBoxLayout创建一个固定...

推荐文章

热门文章

相关标签