C++学习Day01之namespace命名空间

news/2024/12/29 11:54:28/

目录

  • 一、程序及输出
    • 1.1 命名空间用途: 解决名称冲突
    • 1.2 命名空间内容
    • 1.3 命名空间必须要声明在全局作用域下
    • 1.4 命名空间可以嵌套命名空间
    • 1.5 命名空间开放,可以随时给命名空间添加新的成员
    • 1.6 命名空间可以是匿名的
    • 1.7 命名空间可以起别名
  • 二、分析与总结


一、程序及输出

1.1 命名空间用途: 解决名称冲突

game1.h

#include <iostream>
using namespace std;namespace KingGlory
{void goAtk();
}

game1.cpp

#include "game1.h"void KingGlory::goAtk()
{cout << "王者荣耀攻击实现" << endl;
}

game2.h

#include <iostream>
using namespace std;namespace LOL
{void goAtk();
}

game2.cpp

#include "game2.h"void  LOL::goAtk()
{cout << "LOL攻击实现" << endl;}

main.cpp

#include<iostream>
using namespace std;
#include "game1.h"
#include "game2.h"//1、命名空间用途: 解决名称冲突
void test01()
{KingGlory::goAtk();LOL::goAtk();
}
int main(){test01();system("pause");return EXIT_SUCCESS;
}

输出:
在这里插入图片描述

1.2 命名空间内容

namespace A
{int m_A;void func();struct Person{};class Animal{};
}

编译器没有报错提示。

1.3 命名空间必须要声明在全局作用域下

在这里插入图片描述

1.4 命名空间可以嵌套命名空间

#include<iostream>
using namespace std;
namespace B
{int m_A = 10;namespace C{int m_A = 20;}
}
void test03()
{cout << "B空间下的m_A = " << B::m_A << endl;cout << "C空间下的m_A = " << B::C::m_A << endl;
}
int main(){test03();system("pause");return EXIT_SUCCESS;
}

输出:
在这里插入图片描述

1.5 命名空间开放,可以随时给命名空间添加新的成员

#include<iostream>
using namespace std;
namespace B
{int m_A = 10;namespace C{int m_A = 20;}
}
namespace B
{int m_B = 100;
}
void test04()
{cout << "B空间下的m_A = " << B::m_A << endl;cout << "B空间下的m_B = " << B::m_B << endl;
}
int main(){test04();system("pause");return EXIT_SUCCESS;
}

输出:
在这里插入图片描述

1.6 命名空间可以是匿名的

#include<iostream>
using namespace std;
namespace
{int m_C = 1000;int m_D = 2000; //当写的命名空间的匿名的,相当于写了  static int m_C = 1000; static int m_D = 2000;
}void test05()
{cout << "m_C = " << m_C   << endl;cout << "m_D = " << ::m_D << endl;
}
int main(){test05();system("pause");return EXIT_SUCCESS;
}

输出:
在这里插入图片描述

1.7 命名空间可以起别名

#include<iostream>
using namespace std;
namespace veryLongName
{int m_E = 10000;void func(){cout << "aaa" << endl;}
}void test06()
{namespace veryShortName = veryLongName;cout << veryShortName::m_E << endl;cout << veryLongName::m_E << endl;veryLongName::func();
}
int main(){test06();system("pause");return EXIT_SUCCESS;
}

输出:
在这里插入图片描述


二、分析与总结

1、命名空间用途: 解决名称冲突
2、命名空间内容:可以放 变量、函数、结构体、类…
3、命名空间 必须要声明在全局作用域下
4、命名空间可以嵌套命名空间
5、命名空间是开放的,可以随时给命名空间添加新的成员
6、命名空间可以是匿名的
7、命名空间可以起别名


http://www.ppmy.cn/news/1340540.html

相关文章

MySQL EXPLAIN查询执行计划

EXPLAIN 可用来查看SQL执行计划&#xff0c;常用来分析调试SQL语句&#xff0c;来使SQL语句达到更好的性能。 1 前置知识 在学习EXPLAIN 之前&#xff0c;有些基础知识需要清楚。 1.1 JSON类型 MySQL 5.7及以上版本支持JSON数据类型。可以将数组存为JSON格式的字符串&#…

unity3d的海盗王白银城演示

这是一个外网上的下载的海盗王unity3d制作的白银城演示场景。 地图只含有白银城区&#xff0c;没有野外和怪物。 当然也没有服务器端的。 我对灯光、摄像头、天空背景等做过调整&#xff0c;使它显示起来比较鲜丽。 它的模型和贴图是直接拿了海盗的&#xff0c;没有做过优化调整…

Spring Cloud Gateway 修改请求体、响应体

前言 例行每半年一次的工作轮换&#xff0c;接手了同事的网关服务 年底了工作不是很忙&#xff0c;看了下前人的代码&#xff0c;虽然都能读懂&#xff0c;但感觉应该可以再优雅一点 于是把网关的相关知识又翻阅了一下 官方资料 PS&#xff1a;这里如果按新方案调整的话&#…

2024美赛数学建模F题思路分析 - 减少非法野生动物贸易

1 赛题 问题F&#xff1a;减少非法野生动物贸易 非法的野生动物贸易会对我们的环境产生负面影响&#xff0c;并威胁到全球的生物多样性。据估计&#xff0c;它每年涉及高达265亿美元&#xff0c;被认为是全球第四大非法交易。[1]你将开发一个由数据驱动的5年项目&#xff0c;…

双非本科准备秋招(14.1)—— 力扣刷题

今天做两个有点难度的题。 1、295. 数据流的中位数 手写堆实现&#xff1a; 加入元素&#xff1a; 如何维护一个中位数&#xff1f;我们考虑一下堆的特点&#xff0c;大顶堆堆顶是一个最大值&#xff0c;小顶堆堆顶是一个最小值&#xff0c;那么&#xff0c;如果我们可以把数…

jenkins 下载插件sentry-cli失败 证书过期

现状 npm set ENTRYCLI_CDNURLhttps://cdn.npm.taobao.org/dist/sentry-cli npm set sentrycli_cdnurlhttps://cdn.npm.taobao.org/dist/sentry-cli 原因是npm原域名停止解析&#xff0c;在访问上面sentry-cli的cdn资源的时候 证书过期无法下载。 解决&#xff1a; 替换证书过期…

代码随想录算法训练营29期Day37|LeetCode 738,968

文档讲解&#xff1a;单调递增的数字 监控二叉树 贪心算法总结 738.单调递增的数字 题目链接&#xff1a;https://leetcode.cn/problems/monotone-increasing-digits/description/ 思路&#xff1a; 题目要求小于等于N的最大单调递增的整数&#xff0c;那么拿一个两位的数字…

element-ui icon 组件源码分享

今日简单分享 element-ui 源码中的 icon 组件&#xff0c;主要从以下两个方面来分享&#xff1a; 一、源码中 icon 设计思想是什么呢&#xff1f;主要从页面结构、数据、 icon 样式三个方面来分享。 1.1 源码中 icon 组件的页面结构&#xff0c;可以在 package 目录下找到 ico…