C++,命名空间与string类

一、命名空间基本概念

1.1 命名空间定义

namespace 命名空间名
{变量名;函数;结构体;枚举名;
}

1.2 全局引入命名空间

using namespace 命名空间名;

1.3 部分引入命名空间

using namespace 命名空间名::变量名

注意:::表示域限定符,在哪个位置使用,在哪写域限定符

1.4 命名空间冲突问题 

 1.4.1 局部变量和命名空间冲突

        当局部变量和命名空间冲突时,即使引入命名空间,但在使用时因为就近原则,所以默认使用局部变量,如果想要使用命名空间中的变量,则需要使用域限定符。

#include <iostream>
using namespace std;namespace zpp {int age;char name[20] = "zhangsan";int cout;
}
using namespace zpp;int main()
{//定义局变量char name[20] = "hello";std::cout<<"name = "<<name<<endl;      //hellostd::cout<<"name = "<<zpp::name<<endl; //zhangsanreturn 0;
}
1.4.2 多个命名空间中命名冲突问题

         当遇到多个命名空间冲突问题,通常有两种解决方法:1)只引入某一个命名空间,引入需要使用的命名空间的标识符。2)在使用变量时,使用域限定符。

#include <iostream>
using namespace std;namespace zpp {int age;char name[20] = "zhangsan";int cout;
}
using namespace zpp;
int main()
{std::cout << "Hello World!" << endl;//当多个命名空间名产生冲突时,可以使用命名空间名和作用域限定符解决std::cout<<zpp::cout<<endl;        //0return 0;
}
1.4.3 全局变量和命名空间冲入问题

        当全局变量和命名空间冲突, 通常有两种解决方法:1)只引入某一个命名空间,引入需要使用的命名空间的标识符。2)在使用变量时,使用域限定符,全局变量默认和匿名空间存在一起。

#include <iostream>
using namespace std;namespace zpp {int age;char name[20] = "zhangsan";int cout;
}
using namespace zpp;//定义全局变量
int age = 30;int main()
{std::cout << "Hello World!" << endl;//当命名空间中的名字和全局变量冲突时,也要用命名空间名和作用域限定符区分zpp::age = 18;//使用全局变量的方式,系统会将全局变量放到一个命名空间中,该命名空间为匿名空间//匿名空间中的名字使用方式: ::名字std::cout<<"zpp::age = "<<zpp::age << "   全局age = "<<::age<<endl;return 0;
}

1.5 命名空间添加

        如果定义多个相同的命名空间名,最后会合并成一个命名空间。

namespace A 
{int num;int a;
}
namespace A
{int b;
}

1.6 命名空间的嵌套 

        如果在一个命名空间A内嵌套另一个命名空间B,在引入命名空间B时,需要逐级引入。

#include <iostream>
using namespace std;namespace A
{int a = 0;namespace B{int a = 100;char c = 'a';}
}using namespace A;
using namespace A::B;
int main()
{cout << A::a << endl; //a = 0;cout << A::B::a << endl; //a = 100;    return 0;
}

1.7 给命名空间重命名

namespace A
{int a = 0;
}
namespace NEW = A;

1.8 总结

  1. 定义命名空间,关键字为namespace,声明命名空间使用关键字using
  2. 命名冲突问题,多个命名空间冲突、命名空间与全局变量冲突、命名空间与局部变量冲突,解决方法:加上命名空间名和作用域限定符
  3. 命名空间可以嵌套定义,需要使用作用域限定符一级一级找到最低一级进行使用
  4. 一个程序可以定义多个同名的命名空间,但是要求命名空间中的名字不能相同

二、练习

        定义一个学生的结构体,包含学生的姓名,年龄,成绩,性别,学生的成绩,姓名,定义为私有权限;定义一个学生类型的结构体变量,设置公有函数用于给学生的成绩和名字进行赋值,(结构体中的函数:结构体中声明,结构体外定义)

#include <iostream>using namespace std;
struct stu
{int age;float score;string sex;void func();void set_name(string &str,float &s){name = str;score = s;}
private:string name;
};void stu::func()
{cout << name << endl;cout << age << endl;cout << sex << endl;cout << score << endl;
}
int main()
{stu students;string str = "zhangsan";students.age = 18;students.sex = "男";float s = 95;students.set_name(str,s);students.func();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/48341.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

shell基础(三)

目录 一&#xff0c;正则表达式 1&#xff0c;基础正则 2&#xff0c;扩展正则 3&#xff0c;常见正则表达式 二&#xff0c;文件操作四剑客 1&#xff0c;grep进阶 2.egrep 3&#xff0c;find进阶 4&#xff0c;sed 5&#xff0c;awk 一&#xff0c;正则表达式 1&a…

【tkinter 专栏】进度条组件

文章目录 前言本章内容导图1. Progressbar 进度条组件2. Progressbar 组件的相关方法制作显示游戏加载进度的进度条3. 左右循环滚动的进度条通过循环滚动的进度条模拟进入游戏时的加载动画前言 本专栏将参考《Python GUI 设计 tkinter 从入门到实践》书籍(吉林大学出版社 ISB…

Linux内核学习(六)—— 中断(基于Linux 2.6内核)

一、中断 中断使得硬件得以发出通知给处理器。中断随时都可以产生&#xff0c;如键盘敲击就会触发中断&#xff0c;通知操作系统有按键按下。 不同设备对应的中断不同&#xff0c;而每个中断都通过一个唯一的数字标识。这些中断值通常被称为中断请求&#xff08;IRQ&#xff…

ZooKeeper(zk)与 Eureka 的区别及集群模式比较分析

​ 作者&#xff1a;zhaokk 推荐阅读 AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象空间 资源分享 「java、python面试题」来自UC网盘app分享&#xff0c;打开手机app&#xff…

【观察】戴尔科技:构建企业创新“韧性”,开辟数实融合新格局

过去几年&#xff0c;国家高度重视发展数字经济&#xff0c;将其上升为国家战略。其中&#xff0c;“十四五”规划中&#xff0c;就明确提出要推动数字经济和实体经济的深度融合&#xff0c;以数字经济赋能传统产业转型升级&#xff1b;而2023年年初正式发布的《数字中国建设整…

Coremail参与编制|《信创安全发展蓝皮书——系统安全分册(2023年)》

信创安全发展蓝皮书 近日&#xff0c;Coremail参与编制的《信创安全发展蓝皮书—系统安全分册&#xff08;2023年&#xff09;》重磅发布。 此次信创安全发展蓝皮书由工业和信息化部电子第五研究所联合大数据协同安全技术国家工程研究中心重磅共同发布。 本次蓝皮书涵盖信创系…

【工具】Windows操作系统上安装虚拟机VirtualBox

常见的虚拟机有以下几种: VirtualBox。这是一种免费开源的虚拟机软件,由德国Innotek公司开发,首先由Sun Microsystems公司出品。它可以在一台物理计算机上模拟多个客户机,每个客户机可以运行一个独立的操作系统,如Windows、Linux、OS/2 Warp、FreeBSD等。VMware Player。这…

多种方法实现 Nginx 隐藏式跳转(隐式URL,即浏览器 URL 跳转后保持不变)

多种方法实现 Nginx 隐藏式跳转(隐式URL,即浏览器 URL 跳转后保持不变)。 一个新项目,后端使用 PHP 实现,前端不做路由,提供一个模板,由后端路由控制。 Route::get(pages/{name}, [\App\Http\Controllers\ResourceController::class, getResourceVersion])

Java“牵手“微店商品详情快递费用数据获取方法,微店API实现批量商品快递费用数据抓取示例

微店商城是一个网上购物平台&#xff0c;售卖各类商品&#xff0c;包括服装、鞋类、家居用品、美妆产品、电子产品等。要获取微店商品详情数据&#xff0c;您可以通过开放平台的接口或者直接访问微店商城的网页来获取商品详情快递费用信息。以下是两种常用方法的介绍&#xff1…

【Python原创设计】基于Python Flask 机器学习的全国+上海气象数据采集预测可视化系统-附下载链接以及详细论文报告,原创项目其他均为抄袭

基于Python Flask 机器学习的全国上海气象数据采集预测可视化系统 一、项目简介二、开发环境三、项目技术四、功能结构五、运行截图六、功能实现七、数据库设计八、源码获取 一、项目简介 在信息科技蓬勃发展的当代&#xff0c;我们推出了一款基于Python Flask的全国上海气象数…

ZooKeeper 的工作原理

ZooKeeper 的工作原理可以概括为以下几个方面: 1. 数据模型 ZooKeeper 使用树形目录节点(znode)来建模关键的数据,每个 znode 可以存储数据内容,也可以作为目录包括子节点。客户端可以在节点上设置监听器。 2. 一致性算法 ZooKeeper 使用 ZAB(ZooKeeper Atomic Broadcast)协议…

多维时序 | MATLAB实现WOA-CNN鲸鱼算法优化卷积神经网络的数据多变量时间序列预测

多维时序 | MATLAB实现WOA-CNN鲸鱼算法优化卷积神经网络的数据多变量时间序列预测 目录 多维时序 | MATLAB实现WOA-CNN鲸鱼算法优化卷积神经网络的数据多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 多维时序 | MATLAB实现WOA-CNN鲸鱼算法优化卷积神经…

Centos 解决 XXX不在 sudoers 文件中。此事将被报告。的错误

本来想使用 sudo 拷贝一个文件&#xff0c;结果出现上面的问题&#xff01; 下面是解决方法&#xff1a; 首先登录root&#xff0c;然后执行下面的命令 vim /etc/sudoers 将你需要添加的用户带红色框线的地方&#xff0c;模仿root写一遍&#xff0c;然后保存&#xff01; …

分类预测 | MATLAB实现BWO-TCN-Attention数据分类预测

分类预测 | MATLAB实现BWO-TCN-Attention数据分类预测 目录 分类预测 | MATLAB实现BWO-TCN-Attention数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.BWO-TCN-Attention数据分类预测程序&#xff1b; 2.无Attention适用于MATLAB 2022b版及以上版本&#xf…

Elasticsearch算分优化方案之rescore_query

简介 今天来说一说Elasticsearch 的重新评分&#xff0c;即在检索出来一次结果的基础上在进行检索提升数据排序效果&#xff0c;但是仅对查询或者post_filter阶段返回的前多少条进行二次查询。在每个分片上进行二次检索的文档数量时可以通过window_size 控制的&#xff0c;该参…

2019年3月全国计算机等级考试真题(C语言二级)

2019年3月全国计算机等级考试真题&#xff08;C语言二级&#xff09; 第1题 负责数据库中查询操作的数据库语言是 A. 数据定义语言 B. 数据管理语言 C. 数据操纵语言 D. 数据控制语言 正确答案&#xff1a;C 第2题 有关系如下图所示&#xff0c;其违反了哪一类完整性约束 …

2023国赛数学建模思路 - 案例:感知机原理剖析及实现

文章目录 1 感知机的直观理解2 感知机的数学角度3 代码实现 4 建模资料 # 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 感知机的直观理解 感知机应该属于机器学习算法中最简单的一种算法&#xff0c;其…

【Python原创设计】基于Python Flask的上海美食信息与可视化宣传网站项目-附下载方式以及往届优秀论文,原创项目其他均为抄袭

基于Python Flask的上海美食信息与可视化宣传网站&#xff08;获取方式访问文末官网&#xff09; 一、项目简介二、开发环境三、项目技术四、功能结构五、运行截图六、功能实现七、数据库设计八、源码获取 一、项目简介 随着大数据和人工智能技术的迅速发展&#xff0c;我们设…

论文速递 Nature 2023 | Heat-assisted detection and ranging

注1:本文系“计算成像最新论文速览”系列之一,致力于简洁清晰地介绍、解读非视距成像领域最新的顶会/顶刊论文(包括但不限于 Nature/Science及其子刊; CVPR, ICCV, ECCV, SIGGRAPH, TPAMI; Light‐Science & Applications, Optica 等)。 本次介绍的论文是: 2023年,Nature,“…

31.Netty源码之客户端启动流程

highlight: arduino-light 客户端启动主要流程 如果看了服务器端的启动流程&#xff0c;这里简单看下就可以了。 java package io.netty.server; ​ import io.netty.bootstrap.Bootstrap; import io.netty.channel.*; import io.netty.channel.nio.NioEventLoopGroup; import …