文章结束给大家来个程序员笑话:[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美元给程序员,转身就去睡觉了。