名空间(第二篇)

2017/2/24  5:50开始        有一个问题待解决。

解决名称冲突,怎么解决?         是规定作用域?提醒有人用了该名字?

不不不,今天让我们来看看  名空间(namespace):

它规定,如果你想默认使用一个名称,就要在使用域中明确声明其使用的  “空间名”。

例子,

  如我们使用的cout, 要不

//1.
using namespace std;//放在外部和内部都可以,
//但是放在内部时记住,先说明后使用,顺序不能错。
cout<<"EX1.\n";
//2
std::cout<<"EX1.\n";//(只要有#include<iostream>就可以用)
//这种用法最麻烦,但是也是最安全的写法,我当然希望,
//合理的灵活来减小工作量。
//3
using std::cout;//为了某几个名字重了时,其他的还可以随便使用
cout<<"EX1.\n";(注意项 和 1 基本一样)

三种方法记清了!!!

上述三个例子,很好地说明了名空间的部分使用格式

名空间更加近似于自然语言:

举两个栗子:

  1.我高中的外号叫“东东”,但是可能我们学校里外号叫 东东 的多了,那么别人怎么确认是我呢?

      方法一:说   我说的人都是二十五班的,然后你再说东东,大家都知道说的是我了,因为这个班里只有我一个东东。

          类似于: using namespace std;

      方法二:说   等下我说的是 二十五班的那个东东,然后你再说东东,大家都知道说的是我了。

          类似于: using std::cout;

      方法三:每次说到我时,都说 二十五班的那个东东,虽然不自然又麻烦,但是表意明确。

          类似于: std::cout<<"DongDong\n";

感悟:所以啊,关于语言,其实很多解决方法就在我们自然语言中,自然语言流行至今,早已解决了此类问题,所以学会从自然语言中找答案。

由于头文件是凌驾于其他程序文件之上的,是其他程序文件中的所有外部名称(非 函数局部名称)的使用规范描述。

使用规则:(尝试下。。。)

出现了错误!!!

[Error] call of overloaded ‘f()‘ is ambiguous,遇到这种问题怎么办?复制错误上网搜。

我知道发生什么了。。。。

其实先看英文,他说你调用函数模糊不清

然后你发现了错误在于两个相同的函数名,

第一个用 using namespace ...;

第二个必须用   ... :: ....;

不信你试试。。。

果然,

所以如下;

//1.hpp
namespace print1{
    void f();
}
namespace print2{
    void f();
}
//2.hpp
#include<iostream>
#include"1.hpp"
void print1::f(){
    std::cout<<"I Love U.\n";
}
void print2::f(){
    std::cout<<"I Want U.\n";
}
#include<iostream>
#include"2.hpp"
using namespace print1;
int main(){
    f();
    print2::f();
} 

所以啊,原来是小问题,吓坏我了。

或者以后这种情况也可以用{},减小影响范围,

直接把using namespace 。。。放在外面还是不好的

注意,一个用于声明,里面的函数也是声明格式;  一个用于定义,定义格式,记住加上它们的前缀;  再一个就是使用它们的函数;

接下来便是组织模块的地方了:

说实话,我不希望它是虚的东西。

对一个模块,其输入:其他模块提供的服务;  其输出:提供给其他模块的服务(或界面)

就可以把你要的一切头文件组织在一个头文件中

而且你的模块有结构层次,

我们先看看一个例子,然后想想如何实现?

还算清晰,

不太懂

留一个疑问:大概理解组织模块了,如何具体实现?

      需要把前面的头文件看了再说,所以现在还不是时候。

还有数据封装是什么?(对数据重复的解决方法)

用法注意,来两个例子:

  

#include<iostream>
#include<cmath>
using std::cout;
using std::endl;
int abs(int a){
    return a > 0 ? a : -a;
}
int main(){
    cout<<abs(-5)<<endl<<std::abs(-5)<<endl<<std::abs(-5.00)<<endl;
} 
#include<iostream>
#include<cmath>//abs属于其中
int abs(int a){
    return a > 0 ? a : -a;
    //别忘了问号表达式
}
int main(){
    std::cout<<abs(-5)<<std::endl<<std::abs(-5)<<std::endl<<std::abs(-5.00)<<std::endl;
    //endl表示换行,别忘了std::
}
//你想到了接下来看什么了吗?
//首先,
//1.cmath里常用对象 

cout也基本会用了233333

时间: 2024-08-08 05:29:53

名空间(第二篇)的相关文章

[C#] 软硬结合第二篇——酷我音乐盒的逆天玩法

1.灵感来源: LZ是纯宅男,一天从早上8:00起一直要呆在电脑旁到晚上12:00左右吧~平时也没人来闲聊几句,刷空间暑假也没啥动态,听音乐吧...~有些确实不好听,于是就不得不打断手头的工作去点击下一曲或是找个好听的歌来听...但是,[移动手锁定鼠标-->移动鼠标关闭当前页面选择音乐软件页面-->选择合适的音乐-->恢复原来的界面] 这一过程也会烦人不少,如果说软件的设计要在用户体验上做足功夫,感觉这一点是软件设计人员很难管住的方面,毕竟操作系统也就这样安排的嘛(当然,有些机智的开发人

Django之模型层第二篇:多表操作

Django之模型层第二篇:多表操作 一 表关系回顾 ? 在讲解MySQL时,我们提到,把应用程序的所有数据都放在一张表里是极不合理的. ? 比如我们开发一个员工管理系统,在数据库里只创建一张员工信息表,该表有四个字段:工号.姓名.部门名.部门职能描述,此时若公司有1万名员工,但只有3个部门,因为每一名员工后都需要跟着部门信息(部门名.部门职能),所以将会导致部门信息出现大量重复.浪费空间. ? 解决方法就是将数据存放于不同的表中,然后基于foreign key建立表之间的关联关系. ? 细说的

认识IL代码---从开始到现在 &lt;第二篇&gt;

·IL代码分析方法 ·IL命令解析 ·.NET学习方法论 1.引言 自从『你必须知道.NET』系列开篇以来,受到大家很多的关注和支持,给予了anytao巨大的鼓励和动力.俱往昔,我发现很多的园友都把目光和焦点注意在如何理解IL代码这个问题上.对我来说,这真是个莫大的好消息,因为很明显我们的思路慢慢的从应用向底层发生着转变,技巧性的东西是一个方面的积累,底层的探索在我认为也是必不可少的修炼.如果我们选择了来关注这项修炼,那么我们就应该选择如何来着手这项修炼,首先关注anytao的『你必须知道的.N

拿出来分享了!VIP珍藏!!!全网最齐全的 DEDECMS模板 网盘地址!没有你找不到的!【第二篇】

拿出来分享了!VIP珍藏!!!全网最齐全的 DEDECMS模板 网盘地址!没有你找不到的! 模板类型最齐全: -------------优美的走起!---------- 五:DEDECMS模板--服装类模板列表: 织梦模板爱搭配服装行业dedecms门户模板下载.zip 35.25 MB昨天16:43VIP永久 服装行业dedecms模板.zip 138.09 KB昨天16:43VIP永久 织梦模板爱搭配服装行业dedecms门户模板下载.zip 35.25 MB昨天16:43VIP永久 201

第二篇 Replication:分发服务器的作用

本篇文章是SQL Server Replication系列的第二篇,详细内容请参考原文. 分发服务器是SQL Server复制的核心组件.分发服务器控制并执行数据从一个服务器移动到另一个服务器的进程.它将发布和订阅的信息存储在分发数据库.几个代理促进真实数据的移动.术语在这一系列你会看到"分发服务器","发布服务器","订阅服务器".They always refer to a SQL Server instance together with

「C语言回顾之旅」第二篇:指针详解进阶

说明: 第一篇回顾了指针的基本概念以及基本使用,因此对指针也有了一个较为清晰的思路,但实际上第一篇关于指针的内容是不太容易忘记的.这是第二篇中的内容是比较容易混淆,但对于指针的进一步学习也是非常重要的. 一.指向函数的指针 1.函数指针 ·函数指针即指向函数的指针,函数指针值为函数的入口地址,通过使用该指针,即可以使用该函数: ·编写一个程序返回两个数的最大值,通过函数指针调用函数: a.main函数代码如下: #include<stdio.h> int max(int *, int *);

转载:eclipse 搭建SSH项目(第二篇,有具体的项目例子)

原文地址:http://blog.csdn.net/yeohcooller/article/details/9316923 读博文前应该注意: 本文提纲:本文通过一个用户注册的实例讲解SSH的整合.创建Struts项目,整合Hibernate,整合Spring.最后总结如何熟练创建SSH项目. 仅是创建SSH项目,对于其他的扩展例如Struts的国际化,Hibernate的缓存优化,Spring的AOP等,本博文涉及不到.想学习更多的东西请搜索其他博文. 本项目的环境:Windows 8-64位

视觉SLAM中的数学基础 第二篇 四元数

视觉SLAM中的数学基础 第二篇 四元数 什么是四元数 相比欧拉角,四元数(Quaternion)则是一种紧凑.易于迭代.又不会出现奇异值的表示方法.它在程序中广为使用,例如ROS和几个著名的SLAM公开数据集.g2o等程序都使用四元数记录机器人的姿态.因此,理解四元数的含义与用法,对学习SLAM来说是必须的.本节我们就来讲讲四元数. 首先,请读者不要对四元数有什么神秘的感觉.四元数仅是3D姿态的一种表达方式,我们用一个单位四元数表达原本用旋转矩阵表示的三维旋转.这样做一个直接的好处是省空间.一

【第二篇】ASP.NET MVC快速入门之数据注解(MVC5+EF6)

目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策略(MVC5+EF6) [第四篇]ASP.NET MVC快速入门之完整示例(MVC5+EF6) [番外篇]ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6) 请关注三石的博客:http://cnblogs.com/sanshi 数据库连接字符串 上一篇文章中,我们使用MVC的