[源码下载]

不可或缺 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. jetty

    相关的文章太多了,我只按照自己的意思做简单总结. 参见: http://www.cnblogs.com/duanxz/p/3154982.html http://www.cnblogs.com/win ...

  2. Laravel5.0学习--01 入门

    本文以laravel5.0.22为例. 生产环境建议使用laravel5.1版本,因为该版本是长期支持版本.5.1文档更详细:http://laravel-china.org/docs/5.1. 环境 ...

  3. 1.1.1. Atitit Cocos2d-JS v3.x的问题

    1.1.1. Atitit Cocos2d-JS v3.x的问题   1.1. Api 兼容性 场景切换的api都不兼容了...  删除了比较多的api...可以dep啊.. 1.2. gui布局,, ...

  4. JS---DOM操作有哪一些

    一  DOM对象有哪一些 1   windos 1.属性  opener 2.方法  open(),close() 例:<script langguage="javascript&qu ...

  5. js 优化

    一.for循环的优化 <!doctype html> <html lang="en"> <head> <meta charset=&quo ...

  6. 深入理解CSS线性渐变linear-gradient

    × 目录 [1]定义 [2]渐变线 [3]色标 [4]重复渐变 [5]多背景 [6]应用场景 [7]IE兼容 前面的话 在CSS3出现之前,渐变效果只能通过图形软件设计图片来实现,可拓展性差,还影响性 ...

  7. Servlet的四种映射模式

    1. 路径匹配模式 <url-pattern>/test/*</url-pattern> 2. 扩展名匹配模式 <url-pattern>*.do</url- ...

  8. JavaScript垃圾回收(三)——内存泄露

    一.JavaScript内存监测工具 在讨论内存泄露之前,先介绍几款JavaScript内存监测工具. IE的sIEve与JSLeaksDetector(这两个可以在下面的附件中下载),firefox ...

  9. Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Spark Streaming简介 1.1 概述 Spark Streaming 是Spa ...

  10. 开发人员看测试之细说JBehave

    上篇我们说到如何从Github上clone出一个JBehave项目,既是为了学习JBehava,也是为了熟悉下Github.从clone下来的项目看来,基本没什么问题,稍微捋一捋就可以运行,但是就cl ...