C++(1) 命名空间

文章目录

      • C++
        • 1. C++ 概述
        • 2.C++ 相对于 C 语言的增强
        • 2.1C++ 第一行代码
          • 2.2 C++ 补充 bool 类型
          • 2.3 作用域运算符
          • 2.4 命名空间 namespace
            • 2.4.1 命名空间基本内容和开放性
            • 2.4.2 多个命名空间操作
            • 2.4.3 命名空间函数定义和实现分离
            • 2.4.4 匿名命名空间
            • 2.4.5 命名空间别名

C++

1. C++ 概述
C++ 之父:本贾尼·斯特劳斯特卢普
C++ 是基于 C 语言的增强,引用的是面向对象的思想,更多的模拟、函数、容量······
C 和 C++ 都是系统级别的语言,操作系统都是基于 C 和 C++ 实现的!
C++ 的重点知识:1. C++ 相较于 C 语言增强的内容【烦琐知识点】2. C++ 面向对象【封装、继承、多态】3. C++ STL 标准库【各种函数、功能、容器】
2.C++ 相对于 C 语言的增强
2.1C++ 第一行代码

代码实现

// 需要导入的 C++ 基础头文件,对应标准输入输出操作
#include <iostream>/*
需要使用命名空间 namespace 
使用 std , 可以使用 C++中的标准输入 cin 和标准输出 cout 相关内容
*/
using namespace std;int main(int argc, char const *argv[])
{/*cout 对应标准输出操作,将数据内容展示在控制台中!<< 连接使用的运算符,中间是拼接展示内容endl 刷新输出缓冲区,可以将数据内容直接展示到控制台,同时提供换行操作*/cout << "你好, C++!" << ", 重点知识 C++ 增强, C++面向对象, C++ STL 标准库" << endl;return 0;
}

编程流程

编译使用的工具:g++
格式:和 C 语言编译格式一致g++ 目标文件.cpp得到 a.out 可执行文件
2.2 C++ 补充 bool 类型

C 语言基本数据类型

整型:short int long
浮点型:float double
字符型:char

C++ 补充 bool 类型,针对于真假关系

bool
// 补充两个关键字
true (1)
false (0)
#include <iostream>using namespace std;int main(int argc, char const *argv[])
{bool ret = false;/*true 对应 1flase 对应 0*/cout << "ret : " << ret << endl; // 0cout << "sizeof(bool) : " << sizeof(bool) << endl; // 1if (ret) // ret = false(0) 不执行 if 大括号的内容{cout << "元气满满的一天!" << endl; }else // 执行 else 中的内容{cout << "依旧元气满满!" << endl;}return 0;
}
2.3 作用域运算符
:: 格式 提示后续内容的归属权
#include <iostream>using namespace std;/*
全局变量
*/
int a = 10;int main(int argc, char const *argv[])
{cout << "a : " << a << endl; // 10/*函数内部的局部变量*/int a = 100;/*就近原则,导致全局变量 a 被覆盖!无法获取到全局变量 a 对应的数据*/cout << "a : " << a << endl; // 100/*解决方案:可以告知作用域运算符 :: 解决问题告知计算机需要获取全局变量 a可以认为当前 a 全局变量是在整个文件中有效 :: 对应的作用域是整个 C++文件*/cout << "::a : " << ::a << endl; // 10return 0;
}
#include <iostream>int main(int argc, char const *argv[])
{/*目前代码中没有使用命名空间 std直接使用 cout cin endl 报错,无法使用。因为以上内容都属于 std 中的组成部分,属于 std 作用域范围以内。如果不需要引入 std 命名空间的方式,需要加入 std命名空间前缀,同时使用 :: 作用域运算符,引入 cout 内容*/std::cout << "你好!" << std::endl;return 0;
}
2.4 命名空间 namespace
2.4.1 命名空间基本内容和开放性
#include <iostream>using namespace std;/*
自定义命名空间命名空间中可以有变量定义,函数定义,类型声明
*/
namespace A
{// 命名空间 A 中定义的变量 b int a = 10;void test(){cout << "命名空间 A 中的 test 函数" << endl;}
} /*
命名空间是开放性的,后续代码中可以通过命名空间的方式
补充内容,和前置声明的同名命名空间一致!
*/
namespace A 
{// 命名空间 A 中定义的变量 bint b = 100;
}void test();int main(int argc, char const *argv[])
{// 直接使用变量 a 无法使用,因为对应的当前代码而言,没有一个可以明确// 使用的变量 a,显式使用的变量 a// cout << "a :" << a << endl; 语法错误!// 正确用法cout << "a : " << A::a << endl; // 10cout << "b : " << A::b << endl; // 100// 没有用使用作用域运算符,默认是在当前文件中或者其导入的其他文件中// 搜索 test 函数test();/*可以利用作用域运算符,选择当前 test 函数是命名空间 A 中的 test 函数*/A::test();return 0;
}void test()
{cout << "当前 C++ 文件中的 test 函数" << endl;
}
2.4.2 多个命名空间操作
#include <iostream>using namespace std;// 命名空间声明
namespace A 
{int a = 10;
}// 命名空间声明
namespace B 
{int a = 200;
}// 告知编译器,当前代码使用命名空间 B
using namespace B;int main(int argc, char const *argv[])
{/*想要适应以上命名空间中的 a 变量,需要不同的命名空间名称 + ::作用域运算符进行明确区分*/cout << "A::a : " << A::a << endl; // 10cout << "B::a : " << B::a << endl; // 200/*在代码之前使用 using 关键字使用了命名空间,相当于整个代码中的可以直接获取对应命名空间的内容,省去命名空间名称当前变量 a 明确为 B 命名空间中的变量*/cout << "a : " << a << endl; // 200return 0;
}
2.4.3 命名空间函数定义和实现分离
#include <iostream>using namespace std;namespace A
{void test1();void test2();
}using namespace A;int main(int argc, char const *argv[])
{/*函数实现在函数名和返回值之间,需要使用作用域运算符,明确告知当前函数属于哪一个命名空间,后续代码中作用域运算符有可能是结构体(struct),类(class)*/test1();test2();return 0;
}void A::test1()
{cout << "namespace A test2 funtion" << endl;
}void A::test2()
{cout << "namespace A test2 funtion" << endl;
}
2.4.4 匿名命名空间
#include <iostream>using namespace std;namespace
{int a = 100;
}int main(int argc, char const *argv[])
{// 当前代码中有且只有一个 a 变量,可以直接使用命名空间中的 acout << "a : " << a << endl; // 100int a = 2000;// 定义了一个局部变量 a,按照基本的就近原则,直接使用的是局部变量 acout << "a : " << a << endl; // 2000// 如果想使用匿名命名空间中的 a,需要加入 :: 作用域运算符cout << "::a : " << ::a << endl; // 100return 0;
}
2.4.5 命名空间别名
#include <iostream>using namespace std;namespace aaaaaaaa
{int a = 100;
}
int main(int argc, char const *argv[])
{// 命名空间名称较长,会导致使用非常麻烦cout << "a : " << aaaaaaaa::a << endl; // 100// 给予当前命名空间起别名,简化命名空间形式namespace A = aaaaaaaa;cout << "a : " << A::a << endl; // 100return 0; 
}

5 命名空间别名

#include <iostream>using namespace std;namespace aaaaaaaa
{int a = 100;
}
int main(int argc, char const *argv[])
{// 命名空间名称较长,会导致使用非常麻烦cout << "a : " << aaaaaaaa::a << endl; // 100// 给予当前命名空间起别名,简化命名空间形式namespace A = aaaaaaaa;cout << "a : " << A::a << endl; // 100return 0; 
}

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

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

相关文章

写立扣mysql题目收获

练习大纲&#xff1a; 立扣上的sql语句题 学习中的易错点和有趣的题目 总结了下常用的关键词和技巧 SELECT: 用于选择要检索的列。FROM: 用于指定要查询的表。WHERE: 用于过滤行&#xff0c;只返回满足条件的行。GROUP BY: 用于将结果集按一列或多列分组。HAVING: 与GROUP …

《剑指 Offer》专项突破版 - 面试题 29 : 排序的循环链表(C++ 实现)

题目链接&#xff1a;LCR 029. 循环有序列表的插入 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 在一个循环链表中节点的值非递减排序&#xff0c;请设计一个算法在该循环链表中插入节点&#xff0c;并保证插入节点之后的循环链表仍然是排序的。 分析&#xf…

Java集合(List集合)

什么是集合&#xff1f; 什么是集合&#xff1f;集合就是“由若干个确定的元素所构成的整体”&#xff0c;在程序中&#xff0c;一般代表保存 若干个元素&#xff08;数据&#xff09;的某种容器类。 在Java中&#xff0c;如果一个Java对象可以在内部持有&#xff08;保存&…

Windows无法访问github解决方案

方案一 步骤1&#xff1a; 进入 C:\Windows\System32\drivers\etc 路径下 步骤2&#xff1a; 复制 hosts文件到桌面 步骤3&#xff1a; 在复制好的文件最后加上 140.82.114.4 github.com 199.232.69.194 github.global.ssl.fastly.net步骤4&#xff1a; 将修改好的文件替换…

2d关键点可视化 coco转h36m人体关键点

目录 coco转h36m人体关键点 opencv 2d关键点可视化 coco转h36m人体关键点 mhformer中有 def h36m_coco_format(keypoints, scores):assert len(keypoints.shape) 4 and len(scores.shape) 3h36m_kpts []h36m_scores []valid_frames []for i in range(keypoints.shape[…

Soul CEO张璐团队布局AIGC领域,打造数智化社交新体验

作为互联网社交领域的领军企业,Soul App近日再次受到广泛关注,因其在生成式人工智能(AIGC)领域的前沿布局和创新。随着数据积累、算力提升和算法不断迭代,AIGC技术正逐渐成为推动产业创新的重要工具之一。2023年被誉为AIGC元年,而Soul App在CEO张璐的带领下,在这个领域的不懈努…

计算CNN卷积层和全连接层的参数量

计算CNN卷积层和全连接层的参数量 先前阅读 CNN ExplainerA Comprehensive Guide to Convolutional Neural Networks — the ELI5 way 本文主旨意在搞明白2个问题&#xff1a; 第一个问题 一个卷积操作&#xff0c;他的参数&#xff0c;也就是我们要训练的参数&#xff0c;也…

快速添加Android seLinux权限

selinux 权限问题中90%的场景都是在补足缺少的权限&#xff0c;下面的通用方法主要用来解决我们在日志中获取到 avc denied 的问题&#xff1a; 首先获取avc的打印信息&#xff0c;可以通过 logcat | grep avc 获取&#xff0c;假设有如下日志&#xff1a; type1400 audit(0.…

常见逻辑漏洞

挖掘重点&#xff1a; 业务流程和HTTP/HTTPS请求篡改 支付漏洞和越权漏洞是金融业务中常见的 支付漏洞 (1) 密码重置 验证码直接在HTTP响应中返回&#xff1b; 验证码未绑定用户&#xff0c;没和手机号和邮箱号做匹配验证&#xff1b; 未校验用户字段值&#xff0c;改自…

Navigation 2 学习01 介绍及安装及运行示例

Navigation 2 是什么 Nav2 是 ROS 导航 的综合控制服务&#xff0c;类似人类的小脑控制人类的行走及身体平衡&#xff0c;Nav2 针对移动和地面机器人提供支持的自动驾驶车辆的相同类型的技术&#xff0c;经过优化和改造。该项目旨在找到一种安全的方法&#xff0c;使移动机器人…

nginx离线部署-aarch64架构

nginx离线部署-aarch64架构 服务器环境: 架构&#xff1a;aarch64&#xff0c; 系统&#xff1a;Red Hat &#xff08;CentOS 7&#xff09; nginx 1.24 需要准备这些&#xff1a; 可以先尝试安装 Nginx 安装NGINX 内网是没有网络的需要使用 RPM 包安装 gcc&#xff0c; g…

USART通讯

提示&#xff1a;文章 文章目录 前言一、背景二、 2.1 2.2 总结 前言 前期疑问&#xff1a; 1、一开始没有搞明白到底是USART还是UART。 2、其中还涉及到一个同步的概念。同步就是是否有时钟线同步。USART是串口同步异步发送接收器。USART没有时钟线是怎么实现同步的。 3、…

服务器上面安装nodejs react

1、nvm管理nodejs 2、修改端口 /node_modules/react-scripts/scripts/start.js // 这是start.js部分源码 const DEFAULT_PORT parseInt(process.env.PORT, 10) || 3000; const HOST process.env.HOST || 0.0.0.0;// 将3000修改自己需要的端口号 const DEFAULT_PORT parseIn…

KMP字符串匹配算法

介绍&#xff1a; KMP算法是一种改进的字符串匹配算法&#xff0c;由D.E.Knuth&#xff0c;J.H.Morris和V.R.Pratt提出的&#xff0c;因此人们称它为克努特—莫里斯—普拉特操作&#xff08;简称KMP算法&#xff09;。KMP算法的核心是利用匹配失败后的信息&#xff0c;尽量减少…

绘制太极图 - 使用 PyQt

大家好&#xff01;今天我们将一起来探讨一下如何使用PyQt&#xff0c;这是一个强大的Python库&#xff0c;来绘制一个传统的太极图。这个图案代表着古老的阴阳哲学&#xff0c;而我们的代码将以大白话的方式向你揭示它的奥秘。 PyQt&#xff1a;是什么鬼&#xff1f; 首先&a…

C# 中的接口

简介 官方说明&#xff1a;接口定义协定。 实现该协定的任何 class 或 struct 必须提供接口中定义的成员的实现。 接口可为成员定义默认实现。 它还可以定义 static 成员&#xff0c;以便提供常见功能的单个实现。 从 C# 11 开始&#xff0c;接口可以定义 static abstract 或 …

【AI-Pos系列】DeepLabCut 学习

level: nature neuroscience author:Alexander Mathis  1,2, Pranav Mamidanna1 , Kevin M. Cury3 , Taiga Abe3 , Venkatesh N. Murthy  2 , Mackenzie Weygandt Mathis  1,4,8* and Matthias Bethge1,5,6,7,8 date: 2018 keyword: quantifying behavior; pose estimation;…

超级胶水(第十一届蓝桥杯)

题目 小明有 n n n颗石子&#xff0c;按顺序摆成一排。他准备用胶水将这些石子粘在一起。 每颗石子有自己的重量&#xff0c;如果将两颗石子粘在一起&#xff0c;将合并成一颗新的石子&#xff0c;重量是这两颗石子的重量之和。 为了保证石子粘贴牢固&#xff0c;粘贴两颗石…

架构师之路(十六)计算机网络(传输层)

前置知识&#xff08;了解&#xff09;&#xff1a;计算机基础。 作为架构师&#xff0c;我们所设计的系统很少为单机系统&#xff0c;因此有必要了解计算机和计算机之间是怎么联系的。局域网的集群和混合云的网络有啥区别。系统交互的时候网络会存在什么瓶颈。 既然网络层已经…

.net访问oracle数据库性能问题

问题&#xff1a; 生产环境相同的inser语句在别的非.NET程序相应明显快于.NET程序&#xff0c;执行时间相差比较大&#xff0c;影响正常业务运行&#xff0c;测试环境反而正常。 问题详细诊断过程 问题初步判断诊断过程&#xff1a; 查询插入慢的sql_id 检查对应的执行计划…