C++入门经典-例4.11-名称空间的定义和使用

1:名称空间,也成为名字空间、命名空间,关键字为namespace。我们经常使用这样一条语句:

using namespace std;

    我们要使用标准输入输出流,除了包含它们所在的头文件外,还必须使用它们的名称空间。实际上,namespace后面的std正是该名称空间的名称。它主要作用就是防止

不同文件中包含的同一变量、函数等因名字重复而导致错误。“using namespace std”表示在本件中使用所有名字为std的空间中的所有数据,而不需要像下面这样加上名称标识:

using std::cout;

using std::endl;

    除了上述两种方法之外,最常用的方法是如下形式:

std::cout<<"hi!!"<<endl;

    将这3种方法相比较,可得出下面的结论:

(1)第一种方法使用简便,编程者不需要逐个包含名称空间中的变量、函数等,而可以直接使用它们。缺点是,在文件中失去了名称空间应有的作用,定义时需要注意与

该名称空间中的各个数据命名冲突问题。

(2)第二种方法比较折中,它可以方便编程者使用名称空间中的少数数据。

(3)第三种方法在每次使用名称空间中数据时,都要加上名称空间的名字,引用起来比上述两种方法稍显繁琐。但这种方法在所有情况下都试用,不会造成混乱,在编写大型项目时比较实用。

2:定义一个名称空间可以用namespace关键字,形式如下:

namespace 名称空间名{

代码

}

代码例子如下:

// 4.11.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using std::cout;//头文件包含了std名称空间,可以使用
using std::endl;
namespace welcome {
    int count = 3;
    float getCount() {
        return 3.33f;
    }
}

using namespace welcome;//定义名称空间,之后使用

namespace hello {
    int count = 4;
    float getCount() {
        return 4.44f;
    }
}
float getCount() {
    return 1.11f;
}
int main()
{
    int count = 1;
    cout << "直接调用getCount函数和使用count" << endl;
    //cout<<"getCount:"<<getCount()<<endl;   编译器函数重载冲突
    cout << "count:" << count << endl;
    cout << "--------------------------------------" << endl;//视觉分割线
    cout << "使用域标识符调用getCount函数和使用count" << endl;
    cout << "::getCount:" << ::getCount() << endl; //没有定义名称空间
    cout << "count:" << ::count << endl;//
    cout << "welcome::getCount:" << welcome::getCount() << endl;
    cout << "welcome::count:" << welcome::count << endl;
    cout << "::getCount:" << hello::getCount() << endl;
    cout << "hello::count:" << hello::count << endl;
    return 0;
}
View Code

运行结果:

原文地址:https://www.cnblogs.com/lovemi93/p/7521104.html