不可或缺 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++: 命名空间的更多相关文章
- 不可或缺 Windows Native 系列文章索引
[源码下载] 不可或缺 Windows Native 系列文章索引 作者:webabcd 1.不可或缺 Windows Native (1) - C 语言: hello c 介绍不可或缺 Window ...
- 不可或缺 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 ...
- 不可或缺 Windows Native (20) - C++: 友元函数, 友元类
[源码下载] 不可或缺 Windows Native (20) - C++: 友元函数, 友元类 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 友元函数 友元类 示例演 ...
- 不可或缺 Windows Native (11) - C++: hello c++, C++ 与 C语言的区别小介
[源码下载] 不可或缺 Windows Native (11) - C++: hello c++, C++ 与 C语言的区别小介 作者:webabcd 介绍不可或缺 Windows Native 之 ...
- 不可或缺 Windows Native (1) - C 语言: hello c
[源码下载] 不可或缺 Windows Native (1) - C 语言: hello c 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 在 Windows Sto ...
- 不可或缺 Windows Native (24) - C++: 运算符重载, 自定义类型转换
[源码下载] 不可或缺 Windows Native (24) - C++: 运算符重载, 自定义类型转换 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 运算符重载 自 ...
- 不可或缺 Windows Native (23) - C++: 虚函数
[源码下载] 不可或缺 Windows Native (23) - C++: 虚函数 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 虚函数 示例1.基类CppHuman ...
- 不可或缺 Windows Native (22) - C++: 多重继承, 虚基类
[源码下载] 不可或缺 Windows Native (22) - C++: 多重继承, 虚基类 作者:webabcd 介绍不可或缺 Windows Native 之 C++ 多重继承 虚基类 示例1 ...
- 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成员)
[源码下载] 不可或缺 Windows Native (21) - C++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成 ...
随机推荐
- ios UIView autoresizingSubview 属性
自动尺寸调整行为 当您改变视图的边框矩形时,其内嵌子视图的位置和尺寸往往也需要改变,以适应原始视图的新尺寸.如果视图的autoresizesSubviews属性声明被设置为YES,则其子视图会根据au ...
- Kafka入门初探+伪集群部署
Kafka是目前非常流行的消息队列中间件,常用于做普通的消息队列.网站的活性数据分析(PV.流量.点击量等).日志的搜集(对接大数据存储引擎做离线分析). 全部内容来自网络,可信度有待考证!如有问题, ...
- Logstash为什么那么慢?—— json序列化
今天跟峡谷金桥聊天,询问起Logstash的性能,金桥提示说Logstash中json的序列化是浪费性能的一方面.于是便有了下面的测试: 第一步,造数据 首先需要造一份数据,数据可以通过logstas ...
- cmd复制文件
cmd复制文件 复制文件夹,自动覆盖 xcopy /E/I/Y "D:\GitHub\Qriket\lucky\SPA\dist" "D:\GitHub\lucky\ww ...
- Liferay7 BPM门户开发之45: 集成Activiti文件上传部署流程BPMN模型
开发文件上传,部署流程模板. 首先,开发jsp页面,deploy.jsp <%@ include file="/init.jsp" %> <h3>${RET ...
- 使用swoole和websocket结合来制造弹幕
在知乎上无意中看到了一篇有关这个的话题https://zhuanlan.zhihu.com/p/23992890,刚好没事也好久没弄swoole了就自己按照知乎上的那篇文站实操了一下 那个试验中有几个 ...
- 每天学点前端——基础篇1:css盒子模型,绝对定位和相对定位
什么是css盒子模型(Box Model)? W3C中解释为:规定了元素框处理元素内容.内边距.边框和外边距的方式: MDN:文档中的每个元素被描绘为矩形盒子.渲染引擎的目的就是判定大小,属性--比如 ...
- windows phone listbox的点击事件
前台 <ListBox x:Name="> <ListBox.ItemTemplate> <DataTemplate> <Grid Margin=& ...
- poj 2187 Beauty Contest(凸包求解多节点的之间的最大距离)
/* poj 2187 Beauty Contest 凸包:寻找每两点之间距离的最大值 这个最大值一定是在凸包的边缘上的! 求凸包的算法: Andrew算法! */ #include<iostr ...
- 【原创】C#玩高频数字彩快3的一点体会
购彩风险非常高,本人纯属很久以前对数字高频彩的一点研究.目前已经远离数字彩,重点研究足球篮球比赛资料库和赛果预测. 这是一篇在草稿箱保存了1年多的文章,一直没发现,顺便修改修改分享给大家.以后会有更多 ...