当前位置: 首页 > 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.gsyq.cn/news/1537883.html

相关文章:

  • 2026零售/直播电商/连锁企业SCRM推荐:全场景实测与选型指南 - 资讯快报
  • 抚顺漏水检测维修权威推荐:卫生间-厨房-阳台-屋顶天花板漏水维修:靠谱防水补漏公司团队TOP5推荐(2026最新深度调研实测榜单) - 即刻修防水
  • 差分信号
  • 2026年 东莞医用包装源头厂家推荐榜单:灭菌包装/透析纸/复合膜/吸塑盒洁净智造实力工厂解析 - 品牌发掘
  • 成都漏水检测维修权威推荐:卫生间-厨房-阳台-屋顶天花板漏水维修:靠谱防水补漏公司团队TOP5推荐(2026最新深度调研实测榜单) - 即刻修防水
  • 如何快速掌握TV Bro:智能电视上网的终极解决方案
  • 解决CentOS使用yum安装包出现Could not resolve host: mirrorlist.centos.org; 未知的错误的问题
  • PostgreSQL 技术日报 (6月15日)|PG19 性能优化推进,POSETTE 大会倒计时 2 天
  • 合肥工业大学LaTeX论文模板:学术写作的效率革命与格式解放
  • 从‘你好世界’到乱码:深入聊聊Python 2/3的编码差异与迁移那些事儿
  • 3大突破:这款安卓启动器如何让你在手机上畅玩Java版Minecraft?
  • 程序员的设计主权:用契约思维掌控需求变更
  • 2026年沈阳大连专业的RFID厂家推荐榜单:科研、生产、销售和解决方案于一体,企业数智化转型首选 - 资讯快报
  • 2026北京企业怎么选代理记账机构?盘点优质正规机构! - 小柏云
  • Java 职场真相:传统开发遇冷,AI 协作型工程师强势崛起
  • 德阳漏水检测维修权威推荐:卫生间-厨房-阳台-屋顶天花板漏水维修:靠谱防水补漏公司团队TOP5推荐(2026最新深度调研实测榜单) - 即刻修防水
  • DevOps 是一种融合开发(Development)与运维(Operations)的文化、实践和工具的协作范式,旨在通过自动化
  • C语言函数递归从入门到精通(下):性能优化与工程实践
  • 记忆与存档——Checkpointer 与状态持久化 — LangGraph 实战——构建跨平台爆款图文 Agent 第3篇
  • MEXMA:革命性跨语言句子编码器 - 如何通过词元级目标提升句子表示质量
  • 一体化污水处理设备企业推荐榜7条指标盘点 - 资讯快报
  • 3分钟获取阿里云盘Refresh Token完整教程:扫码搞定自动化管理
  • 常德漏水检测维修权威推荐:卫生间-厨房-阳台-屋顶天花板漏水维修:靠谱防水补漏公司团队TOP5推荐(2026最新深度调研实测榜单) - 即刻修防水
  • 淘金币自动化助手:3分钟解放双手,每天节省20分钟的终极指南
  • 5G基站接收机测试避坑指南:从灵敏度到动态范围,那些容易搞错的参数设置与仪表配置
  • 广安漏水检测维修权威推荐:卫生间-厨房-阳台-屋顶天花板漏水维修:靠谱防水补漏公司团队TOP5推荐(2026最新深度调研实测榜单) - 即刻修防水
  • 核心功能对比:LinuxCommandLibrary vs 传统man手册
  • 2026年沈阳大连RFID公司推荐TOP4:AI 机器视觉 + RFID 融合,毫秒级响应、全流程数据采集,批量识别效率提升 80% - 资讯快报
  • 锚定大湾区智能制造升级浪潮,中欧 EMBA 依托 AI 智能变革赋能制造业领军决策者 - 资讯纵览
  • 盘点8款好用的免费降ai率工具(2026最新亲测) - 殷念写论文