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 = ;
float getCount() {
return 3.33f;
}
} using namespace welcome;//定义名称空间,之后使用 namespace hello {
int count = ;
float getCount() {
return 4.44f;
}
}
float getCount() {
return 1.11f;
}
int main()
{
int count = ;
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 ;
}

运行结果:

C++入门经典-例4.11-名称空间的定义和使用的更多相关文章

  1. C++入门经典-例5.17-右值引用的定义

    1:右值引用的定义: 类型 && i=被引用的对象: 左值与右值的区别在于,右值是临时变量,例如,函数的返回值,并且无法被改变. 当右值引用被初始化后,临时变量消失. 代码如下: // ...

  2. Python入门之函数的嵌套/名称空间/作用域/函数对象/闭包函数

    本篇目录: 一.函数嵌套 二.函数名称空间与作用域 三.函数对象 四.闭包函数 ============================================================ ...

  3. C++入门经典-例9.1-函数模板,函数模板的作用,使用数组作为模板参数

    1:函数模板不是一个实在的函数,因此编译器不能为其生成可执行的代码.定义函数模板只是一个对函数功能框架的描述,在具体执行时,将根据传递的实际参数决定其功能. 2:函数模板定义的一般形式如下: temp ...

  4. C++入门经典-例5.11-动态分配空间,堆与栈

    1:在程序中定义一个变量,它的值会被放入内存中.如果没有申请动态分配,它的值将会被放在栈中.栈中的变量所属的内存大小是无法被改变的,它们的产生与消亡也与变量定义的位置和存储方式有关.堆是一种与栈相对应 ...

  5. C++入门经典-例8.5-多重继承

    1:C++允许子类从多个父类继承公有的和受保护的成员,这称为多重继承. 2:多重继承的定义.多重继承有多个基类名称标识符,其声明形式如下: class 派生类名标识符:[继承方式] 基类名标识符1,. ...

  6. C++入门经典-例8.2-构造函数的访问顺序

    1:父类和子类中都有构造函数和析构函数,那么子类对象在创建时是父类先进行构造还是子类先进行构造?同样,在子类对象释放时,是父类先进行释放,还是子类先进行释放?这都是有先后顺序的.答案是当从父类派生一个 ...

  7. C++入门经典-例8.1-类的继承

    1:继承是面向对象的主要特征(此外还有封装和多态)之一,它使得一个类可以从现有类中派生,而不必重新定义一个新类.继承的实质就是用已有的数据类型创建新的数据类型,并保留已有数据类型的特点,以旧类为基础创 ...

  8. C++入门经典-例7.10-运算符的重载,重载加号运算符

    1:曾经介绍过string类型的数据,它是C++标准模版库提供的一个类.string类支持使用加号“+”连接两个string对象.但是使用两个string对象相减确实非法的,其中的原理就是C++所提供 ...

  9. C++入门经典-例7.7-对象与复制,菌类的繁殖

    1:当函数以相应的类作为形参列表时,对象可以作为函数的参数传入.在学习函数时,我们曾提过,值传递先复制实参产生副本.那么对象的副本是怎样的呢? 复制构造函数是指类的对象被复制时所调用的函数.下面两种情 ...

随机推荐

  1. mysql索引失效的情况

    1.WHERE字句的查询条件里有不等于号(如:WHERE column!=...),MYSQL将无法使用索引: 2.WHERE字句的查询条件里使用了函数的列(如:WHERE DAY(column)=. ...

  2. Alibaba开源组件-分布式流量控制框架sentinel初探

    Alibaba开源组件-分布式流量控制框架sentinel初探 2018年12月09日 18:23:11 SuperPurse 阅读数 1965更多 分类专栏: J2EE   版权声明:本文为博主原创 ...

  3. cut--修剪小能手

    cut命令 cut原理:以每一行位一个处理对象. 参数选项 解释说明 -b 以字节为单位进行分割 -c 以字符为单位进行分割(对切割中文有奇效) -d 自定义分隔符号,默认以tab为分隔符 1:-b ...

  4. 机器学习-SVM-核函数

    SVM-核函数 在研究了一天的SVM核函数后,我顿悟了一个道理: 研究和使用核函数的人,从一开始的目的就是把data分开而已.高维和映射,都是原来解释操作合理性的,但根本不是进行这一操作的原因 我为什 ...

  5. 精通shell编程--最后的总结

    不得不说shell语法是丑陋的,操作是简单高效的,最后一次学习总结shell shell总结 字符串删除与替换等常见操作 ## 字符串长度 a=1234 echo "${#a}" ...

  6. cassandra分页

    在cassandra的协议中,没有具体规定查询结果的行数限制.但是对于大的数据集,依然有结果分页的必要.过大的结果集会爆掉服务端或者客户端的内存. 传统的分页方法采用了一点trick,采用了token ...

  7. verilog分频模块设计

    verilog设计: 分频器的设计: 分频器就是将一个时钟源的频率降低的过程(可以通过观察分频之后周期中包含几个原时钟周期来看是几分频),分频分为基数分频也分为偶数分频, 偶数分频的代码如下:(其中就 ...

  8. Linux SUID SGID SBIT 简介和权限设定

    SUID :Set UID 1 SUID 权限仅对二进制程序(binary program)有效 2 执行者对于该程序需要具有x的可执行权限 3 本权限仅在执行该程序的过程中有效(run-time) ...

  9. CH5102/SPOJ?? Mobile Service/P4046 [JSOI2010]快递服务[线性dp+卡常]

    http://contest-hunter.org:83/contest/0x50%E3%80%8C%E5%8A%A8%E6%80%81%E8%A7%84%E5%88%92%E3%80%8D%E4%B ...

  10. 原型模式故事链(5)--JS变量作用域、作用域链、闭包

    上一章 JS执行上下文.变量提升.函数声明 传送门:https://segmentfault.com/a/11... 本次我们主要讲讲变量作用域和闭包变量作用域:顾名思义:变量起作用的范围.变量分为全 ...