不可或缺 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++: 继承, 组合, 派生类的构造函数和析构函数, 基类与派生类的转换, 子对象的实例化, 基类成员的隐藏(派生类成员覆盖基类成 ...
随机推荐
- MySQL主键设计
[TOC] 在项目过程中遇到一个看似极为基础的问题,但是在深入思考后还是引出了不少问题,觉得有必要把这一学习过程进行记录. MySQL主键设计原则 MySQL主键应当是对用户没有意义的. MySQL主 ...
- [开源]微信在线信息模拟测试工具(基于Senparc.Weixin.MP开发)
目前为止似乎还没有看到过Web版的普通消息测试工具(除了官方针对高级接口的),现有的一些桌面版的几个测试工具也都是使用XML直接请求,非常不友好,我们来尝试做一个“面向对象”操作的测试工具. 测试工具 ...
- Redis和Memcached的区别详解
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/119.html?1455855360 Redis的作者Salvatore ...
- [Spring框架]Spring 事务管理基础入门总结.
前言:在之前的博客中已经说过了数据库的事务, 不过那里面更多的是说明事务的一些锁机制, 今天来说一下Spring管理事务的一些基础知识. 之前的文章: [数据库事务与锁]详解一: 彻底理解数据库事务一 ...
- session 学习
session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息. 当程式需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里 ...
- python2.7和python3共存
python2.7和python3共存 原本装了python,玩nodejs的时候需要node-gyp来编译依赖,无赖这货需要python2.5<v<3.0,那就弄两个版本吧 转载自 ht ...
- oracle 中 rownum 和 row_number()
简单的介绍下oracle 中rownum 和 row_number() 使用,实例演示. 参照:http://www.cnblogs.com/zjrstar/archive/2006/08/31/49 ...
- asp.net的简易的参数化查询
protected void btnInsert_Click(object sender, EventArgs e) { string sql = "insert into contactg ...
- CSS3新技能学习笔记
说来惭愧自认为对css了解,但在项目中却很少有正确的使用css,如果面向对象的css吧,其实也不是不想用而是css天生就是面向对象的,高度可重用,但是如果把每个都单独提取,难免会有过多的class以及 ...
- 深入理解CSS溢出overflow
× 目录 [1]定义 [2]属性 [3]失效[4]应用 前面的话 当一个元素固定为某个特定大小,但内容在元素中放不下.此时就可以利用overflow属性来控制这种情况 定义 overflow溢出 值: ...