当前位置: 首页 > news >正文

C++命名空间与模块化

C++命名空间与模块化

命名空间是C++组织代码、避免名称冲突的机制。合理使用命名空间可以提高代码的可维护性和模块化程度。

命名空间基本用法使用namespace关键字定义。

#include
#include
#include

namespace math {
int add(int a, int b) { return a + b; }
int multiply(int a, int b) { return a * b; }

namespace advanced {
double power(double base, int exp) {
double result = 1.0;
for (int i = 0; i < exp; ++i) result *= base;
return result;
}

double sqrt(double x) {
double guess = x / 2.0;
for (int i = 0; i < 10; ++i) {
guess = (guess + x / guess) / 2.0;
}
return guess;
}
}
}

void namespace_basics() {
std::cout << "10 + 20 = " << math::add(10, 20) << "\n";
std::cout << "5 * 6 = " << math::multiply(5, 6) << "\n";
std::cout << "2^10 = " << math::advanced::power(2.0, 10) << "\n";
std::cout << "sqrt(2) = " << math::advanced::sqrt(2.0) << "\n";
}

using声明引入特定名称。

void using_declaration() {
using math::add;
using math::advanced::power;

std::cout << "add: " << add(100, 200) << "\n";
std::cout << "power: " << power(3.0, 4) << "\n";
}

using指令引入整个命名空间。

namespace graphics {
void render() { std::cout << "Graphics render\n"; }
}

namespace audio {
void render() { std::cout << "Audio render\n"; }
}

void using_directive() {
using namespace graphics;
render();

audio::render();
}

命名空间别名简化长命名空间。

namespace company_project_module {
class Widget {
public:
void process() { std::cout << "Process widget\n"; }
};
}

void alias_demo() {
namespace cpm = company_project_module;
cpm::Widget w;
w.process();
}

匿名命名空间实现内部链接。

namespace {
int internal_counter = 0;
void internal_function() {
++internal_counter;
std::cout << "Internal count: " << internal_counter << "\n";
}
}

void anonymous_demo() {
internal_function();
internal_function();
}

内联命名空间用于版本管理。

namespace library {
inline namespace v2 {
class API {
public:
void execute() { std::cout << "v2 API\n"; }
};
}

namespace v1 {
class API {
public:
void execute() { std::cout << "v1 API\n"; }
};
}
}

void inline_namespace_demo() {
library::API api;
api.execute();

library::v1::API old_api;
old_api.execute();
}

命名空间可以分散定义。

namespace data {
struct User {
std::string name;
int age;
};
}

namespace data {
struct Product {
std::string name;
double price;
};
}

void distributed_namespace() {
data::User u{"Alice", 30};
data::Product p{"Widget", 9.99};
std::cout << u.name << " bought " << p.name << "\n";
}

ADL(参数依赖查找)允许不带命名空间调用函数。

namespace util {
struct Point { int x, y; };
void print(const Point& p) {
std::cout << "(" << p.x << "," << p.y << ")\n";
}
}

void adl_demo() {
util::Point p{10, 20};
print(p);
}

命名空间别名在函数内部更安全。

void safe_alias() {
namespace m = math::advanced;
std::cout << m::sqrt(16.0) << "\n";
}

命名空间是C++代码组织的基础,合理使用可以提高代码的可维护性和可读性。

http://www.jsqmd.com/news/1026009/

相关文章:

  • 2026零售/直播电商/连锁企业SCRM推荐:全场景实测与选型指南 - 资讯快报
  • 客户端检测方法论:分层抽象与责任分离设计
  • 差分信号
  • 燧原科技科创板 IPO 过会,各轮次及老股投资人收益几何?
  • 2026年 广东小吃盒厂家推荐排行榜:环保材质与创意设计并重的口碑之选 - 品牌发掘
  • 深入解析SC140 DSP核心:并行架构、指令集与嵌入式信号处理优化实践
  • 2026年 东莞医用包装源头厂家推荐榜单:灭菌包装/透析纸/复合膜/吸塑盒洁净智造实力工厂解析 - 品牌发掘
  • 成都漏水检测维修权威推荐:卫生间-厨房-阳台-屋顶天花板漏水维修:靠谱防水补漏公司团队TOP5推荐(2026最新深度调研实测榜单) - 即刻修防水
  • 华为GaussDB数据库客户端TPDSS下载安装与连接配置全指南
  • 抚顺漏水检测维修权威推荐:卫生间-厨房-阳台-屋顶天花板漏水维修:靠谱防水补漏公司团队TOP5推荐(2026最新深度调研实测榜单) - 即刻修防水
  • 2026年6月石家庄搬家公司深度测评:乐享搬家是真靠谱 - 幸福生活序曲
  • 西安打印机维修哪家好?锐创办公全链路服务深度解析 - 资讯快报
  • Clickteam Fusion游戏逆向工程实战:CTFAK 2.0高效资源提取与深度分析指南
  • 如何快速掌握TV Bro:智能电视上网的终极解决方案
  • jQuery事件系统:解剖前端事件底层原理与工程实践
  • 文山漏水检测维修权威推荐:卫生间-厨房-阳台-屋顶天花板漏水维修:靠谱防水补漏公司团队TOP5推荐(2026最新深度调研实测榜单) - 即刻修防水
  • 数据库集群和分布式到底有什么区别?从主从复制到分库分表的选型指南(附避坑清单)
  • 2026国内油烟净化器生产厂家排行|知名油烟净化设备品牌实力盘点 - 资讯快报
  • 解决CentOS使用yum安装包出现Could not resolve host: mirrorlist.centos.org; 未知的错误的问题
  • GitHub平台功能大揭秘:含AI创作与安全防护,适配SharkClean扫地机器人MCP服务器
  • PostgreSQL 技术日报 (6月15日)|PG19 性能优化推进,POSETTE 大会倒计时 2 天
  • 惠州漏水检测维修权威推荐:卫生间-厨房-阳台-屋顶天花板漏水维修:靠谱防水补漏公司团队TOP5推荐(2026最新深度调研实测榜单) - 即刻修防水
  • 从追逐独角兽到回归价值:一位创业者的十年反思
  • BiliTools:3分钟学会用这款开源工具箱管理你的B站收藏
  • 从‘你好世界’到乱码:深入聊聊Python 2/3的编码差异与迁移那些事儿
  • 一体化污水处理设备品牌推荐5大关键维度实测 - 资讯快报
  • 探秘正规新干芝麻灰石材加工厂:实用指南与行业深度洞察分享 - 资讯快报
  • 合肥工业大学LaTeX论文模板:学术写作的效率革命与格式解放
  • 终极指南:如何在Photoshop中无缝集成ComfyUI和Stable Diffusion AI绘图功能
  • 2026沈阳大连 RFID 厂家实力推荐榜:自主研发实力雄厚,全流程数字化与智能决策,低成本数字化改造 - 资讯快报