[源码下载]

不可或缺 Windows Native (15) - C++: 命名空间

作者:webabcd

介绍
不可或缺 Windows Native 之 C++

  • 命名空间

示例
CppNamespace.h

#pragma once 

#include <string>

using namespace std;

// 定义一个命名空间,并在其中定义一个类以及声明一个函数
namespace NativeDll
{
class CppNamespace
{
public:
string Demo(); public:
string Demo2();
}; string demo3(); string demo4();
}

CppNamespace.cpp

/*
* 命名空间
*/ #include "pch.h"
#include "CppNamespace.h" using namespace NativeDll; // 不指定命名空间则是全局的
void namespace_demo1();
void namespace_demo2();
void namespace_demo3(); // 实现 NativeDll 命名空间中的函数
string CppNamespace::Demo() // 写全了就是 string NativeDll::CppNamespace::Demo()
{
// 命名空间的定义及使用
namespace_demo1(); // 命名空间的嵌套及使用
namespace_demo2(); // 没有名字的命名空间的定义及使用
namespace_demo3(); return Demo2() + demo3() + demo4();
} // 实现 NativeDll 命名空间中的函数
string NativeDll::demo3() // 必须要指定命名空间,否则就是全局的
{
return "demo3";
} // 实现 NativeDll 命名空间中的函数
namespace NativeDll
{
string CppNamespace::Demo2()
{
return "Demo2";
} string demo4()
{
return "demo4";
}
} // 定义 2 个命名空间
namespace ns1
{
string getString()
{
return "ns1";
}
}
namespace ns2
{
string getString()
{
return "ns2";
}
}
namespace ns2 // 命名空间是可以多次定义的
{
string getString2()
{
return "ns2 getString2";
}
} // 命名空间的使用
void namespace_demo1()
{
string result = ""; // 调用指定命名空间下的函数
result = ns1::getString(); // ns1
result = ns2::getString(); // ns2 // 引入指定的命名空间
using namespace ns2; // 之后 ns2 有效
result = getString(); // ns2 using namespace ns1; // 之后 ns1 和 ns2 同时有效
// result = getString(); // 编译错误,因为不明确 // 引入指定命名空间的指定函数
using ns1::getString; // 之后如果使用 getString() 函数,则其是来自 ns1 下的
result = getString(); // ns1 // using ns2::getString; // 编译错误,和 using ns1::getString; 冲突了
} // 定义 1 个嵌套的命名空间
namespace nsA
{
string getString()
{
return "nsA";
} namespace nsB
{
string getString()
{
return "nsB";
}
}
} void namespace_demo2()
{
string result = ""; // 嵌套命名空间的使用
result = nsA::nsB::getString(); // nsB // 可以为嵌套命名空间设置别名(非嵌套的命名空间也可以设置别名)
namespace ns = nsA::nsB;
result = ns::getString(); // nsB
} // 在名为 nsX 的命名空间下定义一个没有名字的命名空间
namespace nsX
{
// 匿名命名空间
namespace
{
string getStringAnonymous()
{
return "getStringAnonymous";
}
} // 内部可以直接调用没有名字的命名空间下的函数
string getString()
{
return "getString() " + getStringAnonymous();
}
} void namespace_demo3()
{
string result = ""; // 外部也可以直接调用指定命名空间下的匿名命名空间中的函数
result = nsX::getStringAnonymous(); // getStringAnonymous
result = nsX::getString(); // getString() getStringAnonymous
}

OK
[源码下载]

不可或缺 Windows Native (15) - C++: 命名空间的更多相关文章

  1. 不可或缺 Windows Native 系列文章索引

    [源码下载] 不可或缺 Windows Native 系列文章索引 作者:webabcd 1.不可或缺 Windows Native (1) - C 语言: hello c 介绍不可或缺 Window ...

  2. 不可或缺 Windows Native (25) - C++: windows app native, android app native, ios app native

    [源码下载] 不可或缺 Windows Native (25) - C++: windows app native, android app native, ios app native 作者:web ...

  3. 不可或缺 Windows Native (20) - C++: 友元函数, 友元类

    [源码下载] 不可或缺 Windows Native (20) - C++: 友元函数, 友元类 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 友元函数 友元类 示例演 ...

  4. 不可或缺 Windows Native (11) - C++: hello c++, C++ 与 C语言的区别小介

    [源码下载] 不可或缺 Windows Native (11) - C++: hello c++, C++ 与 C语言的区别小介 作者:webabcd 介绍不可或缺 Windows Native 之 ...

  5. 不可或缺 Windows Native (1) - C 语言: hello c

    [源码下载] 不可或缺 Windows Native (1) - C 语言: hello c 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 在 Windows Sto ...

  6. 不可或缺 Windows Native (24) - C++: 运算符重载, 自定义类型转换

    [源码下载] 不可或缺 Windows Native (24) - C++: 运算符重载, 自定义类型转换 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 运算符重载 自 ...

  7. 不可或缺 Windows Native (23) - C++: 虚函数

    [源码下载] 不可或缺 Windows Native (23) - C++: 虚函数 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 虚函数 示例1.基类CppHuman ...

  8. 不可或缺 Windows Native (22) - C++: 多重继承, 虚基类

    [源码下载] 不可或缺 Windows Native (22) - C++: 多重继承, 虚基类 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 多重继承 虚基类 示例1 ...

  9. 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成员)

    [源码下载] 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成 ...

随机推荐

  1. SVN 使用

    我是一个前端,svn 的服务器配置也是后端弄好的,到底怎么弄的不清楚. 最开始是想和xcode关联起来,每次提交代码也方便,但是在Xcode里的偏好设置Accounts 模块 添加了SVN 服务端地址 ...

  2. 2015 年最受 Linux 爱好者欢迎的软硬件大盘点

    Linux 爱好者都喜欢用哪些硬件,哪些发行版呢?近日 OpenBenchmarking.org 做了一个 2015 年度数据的统计和梳理,Linux Story 特意整理了一下,分享给大家. 转载于 ...

  3. 发布iOS应用程序到苹果APP STORE完整流程

    参考:http://blog.csdn.net/mad1989/article/details/8167529(xcode APP 打包以及提交apple审核详细流程(新版本更新提交审核)) http ...

  4. HTML基础笔记-01

    ---恢复内容开始--- 学习网站:W3School 1.基础知识 目录: <1.我的文档—> 选择目录名—> 主页—> 样式(点击标题样式,选择你想要的每个标题,重复此步骤) ...

  5. HTTP学习三:HTTPS

    HTTP学习三:HTTPS 1 HTTP安全问题 HTTP1.0/1.1在网络中是明文传输的,因此会被黑客进行攻击. 1.1 窃取数据 因为HTTP1.0/1.1是明文的,黑客很容易获得用户的重要数据 ...

  6. java webservice 总结(学会读别人的webservice并且通过代理模式访问)

    公司做的系统之间的交互用到了webservice做交互,现在对webservice做一个总结. 1.配置已有的webservice webservice主要包括 xml/json:作为传输数据的格式 ...

  7. 【原创】探索Newlife X组件利器之:XCoder点滴[附下载]

    本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html Newlife XCode组件相关文章目录:http://www.cnblogs ...

  8. Zookeeper-Zookeeper的配置

    前面两篇文章介绍了Zookeeper是什么和可以干什么,那么接下来我们就实际的接触一下Zookeeper这个东西,看看具体如何使用,有个大体的感受,后面再描述某些地方的时候也能在大脑中有具体的印象.本 ...

  9. AngularJS的学习--$on、$emit和$broadcast的使用

    AngularJS中的作用域有一个非常有层次和嵌套分明的结构.其中它们都有一个主要的$rootScope(也就说对应的Angular应用或者ng-app),然后其他所有的作用域部分都是继承自这个$ro ...

  10. Spring学习总结(五)——Spring整合MyBatis(Maven+MySQL)二

    接着上一篇博客<Spring整合MyBatis(Maven+MySQL)一>继续. Spring的开放性和扩张性在J2EE应用领域得到了充分的证明,与其他优秀框架无缝的集成是Spring最 ...