zoukankan      html  css  js  c++  java
  • 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

    运行结果:

  • 相关阅读:
    leetcode ——187. 重复的DNA序列
    leetcode——30. 串联所有单词的子串
    leetcode——520. 检测大写字母
    leetcode——686. 重复叠加字符串匹配
    leetcode——459. 重复的子字符串
    leetcode——28. 实现 strStr()
    leetcode——17. 电话号码的字母组合
    leetcode——14. 最长公共前缀
    NAT模式实现局域网物理机与虚拟机的互通访问
    .Net Core项目发布到虚拟机(三)
  • 原文地址:https://www.cnblogs.com/lovemi93/p/7521104.html
Copyright © 2011-2022 走看看