c++之旅——第三弹

大家好啊,这里是c++之旅第三弹,跟随我的步伐来开始这一篇的学习吧!

如果有知识性错误,欢迎各位指正!!一起加油!!

创作不易,希望大家多多支持哦!

 

一.命名空间;

1.命名空间的作用:

解决同名实体的冲突问题,同名变量可以通过括号的作用域来确定使用的是哪一个变量,而函数和类型(比如自定义的结构体类型)则不可以通过作用域来进行区别,所以使用命名空间来区分。提供代码的模块化和组织化,并提高代码的可读性和可维护性。

2.括号的分类:

定义域和作用域

(1)定义域:定义了一个结构体类型这种大括号就是定义域,后面加分号;

eg:

struct MyPoint

{

int x, y;

};//定义域

(2)作用域:函数体和命名空间这种用来区分管理的代码区域的就是作用域,后面不加分号

eg:

namespace MyMath

{

int hp;//不建议在命名空间中进行变量的定义,因为引用开放命名空间后可能会导致变量的重命名冲突问题,这样反而更不好管理代码 //空间成员一般有:函数声明,类型定义

}//作用域

在自己写命名空间时,一般会写在头文件中,因为命名空间里面的函数声明和类型定义一般就在头文件中

3.定义命名空间的注意事项:

(1)、命名空间标识符必须满足标识符的命名规则和命名规范,习惯名字唯一,通常以开发团队的名字(项目名)来命名

(2)、命名空间可以在全局,也可以在局部(命名空间可以接受嵌套定义),但不能在函数内和类中定义!!!

(3) 、注意命名污染,尽量规避同名的出现,如果两个命名空间名同名,那么就会合并两个命名空间

4.命名空间的访问:

通过作用域运算符 (::) 访问命名空间中的成员

(1)、using 声明:using 命名空间名称 :: 空间成员名称 ;

放开一个成员的可见性,这一个成员可以在空间外可见 ( 比较容易避免出现命名污染 )

eg:using std::string;

(2)、using 指示:using namespace 命名空间名 ;

放开该命名空间的所有权限(所有成员都在空间外可见),适用于该空间的大部分成员都需要经常被使用

eg:using namespace std;//这个语句在c++中经常可以看到,这是因为std命名空间是一个c++语言标准库中的命名空间

(3)、命名空间名称 :: 空间成员名称,使用时直接访问空间下的某一个成员(一般用于该成员不经常使用以及该命名空间也不经常使用的情况)

eg:std::string

5.有关命名空间的一些操作:

(1),给命名空间取一个别名以及命名空间嵌套时的使用:

//命名空间MYTool已经在头文件中定义,并且.cpp源文件已经引用头文件,命名空间MyMath在MyTool中嵌套着

namespace mt = MyTool;

using namespace mt;

using namespace MyMath;//引用该被嵌套的命名空间

(2),代码片段理解:(要使用cin和cout函数的准备条件)

#include <iostream>//引用这个头文件是让编译器认识cin和cout标识符 using std::cin;//放开命名空间中的这两个函数是为了开放这两个函数的使用权限 using std::cout;

二.cin和cout:

1.是C++ 中用来做输入输出的操作的函数,功能分别和 C 语言的 scanf 和 printf 一样

2.使用示例:

int x,y;

cin>>x>>y;// 从键盘输入

cout<<x<<"\n"<<y<<endl;//输出

三.string的使用:

1.c++中string类型相对于C语言中的字符数组的优点:

(1)、string具有动态大小,避免浪费存储空间

(2)、操作简单,比如比较两个字符串是否相等可以用==比较

(3)、有很多方便的字符串处理函数,比如获取字符串长度,查找子串等等

2.使用string类型代码:

#include <string>

#include<iostream>

using namespace std;

int main()

{

string s("123214");//创建s字符串并赋值为123214

s.append("x");//string类型中的追加函数,用于追加字符串

s.append("123"); s += "abc";//字符串也可以直接使用加法来追加

s = "wqsdalfjs";//使用=赋值号可以对字符串进行赋值操作

s.erase(s.begin() + 1);//用于删除字符串指定位置处的字符

s.length();//得到字符串的长度

s[0];//字符串的首个字符

string s1;

if (s == s1)//可以用==来判断两个字符串是否相等

{

cout<<1<<endl;

}

return 0;

}

四.c++11的标准:

1、定义变量初始化新方式:

int a(10);

int x ={(int)1.23};//这种不允许值的类型和变量的类型不一样

2、空指针

int *p = nullptr;//nullptr是关键字,相当于NULL宏

3、自动类型

auto x = 10;//根据值推导x的类型,此时x的类型为int

4、decltype

int a=1;

decltype(a)b;//理解为使用a的类型定义了b

decltype((a))m=a;//再加一个圆括号,给a定义了一别名m

5、for 循环新规则

string str="abcdefghijkl";

for(auto i:str)// 遍历 str 输出,这个只能实现遍历而不能实现循环做某种操作

{

cout<<i<<endl;

}

6、类型取别名

using MP=int;// 新写法

//区别于C语言中的typedef,两者对象顺序是相反的

五,异常处理简讲:

try 块,监视及捕获异常 catch 块,用来处理异常 throw 用来抛出异常

throw 用来抛出某个类型的数据,表示异常。在当前层级能被try捕获则匹配当前try后面的catch,如果能匹配就处理,如果不能匹配往上层级传递

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV 4基础篇| OpenCV图像的裁切

目录 1. Numpy切片1.1 注意事项1.2 代码示例 2. cv2.selectROI()2.1 语法结构2.2 注意事项2.3 代码示例 3. Pillow.crop3.1 语法结构3.2 注意事项3.3 代码示例 4. 扩展示例&#xff1a;单张大图裁切成多张小图5. 总结 1. Numpy切片 语法结构&#xff1a; retval img[y:yh, x…

单源最短路的综合应用

1135. 新年好 - AcWing题库 单源最短路和暴搜的结合 import java.util.*;class PII implements Comparable<PII>{int num, distance;public PII(int num, int distance){this.num num;this.distance distance;}public int compareTo(PII o){return distance - o.dista…

解读OWASP软件保障成熟度模型SAMM

OWASP软件保证成熟度模型&#xff08;SAMM&#xff09;可为所有类型的组织分析和改进其软件安全态势提供有效和可衡量的方法。OWASP SAMM支持完整的软件生命周期&#xff0c;包括开发和获取&#xff0c;并且与技术和过程无关。 1. 简介 OWASP软件保证成熟度模型&#xff08;SA…

文生视频基础1:sora技术报告学习

sora技术报告学习 背景学后理解训练流程技术拆解编码解码扩散模型训练用数据 28号直播交流会后的一些想法自身的一点点想法 参考 原文地址&#xff1a;Video generation models as world simulators 背景 此项目的背景是基于Datawhale的关于sora技术文档的拆解和相关技术讲解…

什么是支持向量机(Support vector machine)和其原理

作为机器学习的基础算法&#xff0c;SVM被反复提及&#xff0c;西瓜书、wiki都能查到详细介绍&#xff0c;但是总是觉得还差那么点&#xff0c;于是决定自己总结一下。 一、什么是SVM&#xff1f; 1、解决什么问题&#xff1f; SVM&#xff0c;最原始的版本是用于最简单的线…

部署bpmn项目实现activiti流程图的在线绘制

本教程基于centos7.6环境中完成 github开源项目: https://github.com/Yiuman/bpmn-vue-activiti软件&#xff1a;git、docker 1. 下载源代码 git clone https://github.com/Yiuman/bpmn-vue-activiti.git2. 修改Dockerfile文件 声明基础镜像&#xff0c;将项目打包&#xff…

vue2+若依框架plus交互 路由介绍

本周及寒假 参加了校企合作的工程过程管理&#xff0c;和学长学姐一起写项目&#xff0c;之前学了vue也没有应用&#xff0c;然后对框架很多组件的用法不太了解&#xff0c;前期耽误了一些时间。 框架模块 首先是框架模块的介绍 api存了一些系统管理及发送请求的方法 例如p…

智能驾驶规划控制理论学习04-基于车辆运动学的规划方法

目录 一、线性二自由度汽车模型&#xff08;自行车模型&#xff09; 1、二自由度模型概述 2、不同参考点下的状态空间方程 3、前向仿真 二、运动基元生成方法 1、杜宾斯曲线&#xff08;Dubins Curve&#xff09; 2、Reeds Shepp Curve 三、多项式曲线&#xff08;Poly…

redis7.2.2|Dict

文章目录 StructredisDBdictdictTypedictEntry 宏定义散列函数散列冲突dictEntry pointer bit tricks[指针位技巧]API implementation_dictReset_dictInitdictCreatedictGetHashdictSetKeydictSetValdictSetNextdictGetNextdictGetValdictGetKey_dictCleardictEmptydictRelease…

五、西瓜书——集成学习

1.个体与集成 集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能&#xff0c;这对“弱学习器”(weak learner)尤为明显因此集成学习的很多理论研究都是针对弱学习器进行的而基学习器有时也被直接称为弱学习器。 要获得好的集成个体学习器应“好而不同”…

详解JavaScript的函数

详解 JavaScript 的函数 函数的语法格式 创建函数/函数声明/函数定义 function 函数名(形参列表) { 函数体 return 返回值; // return 语句可省略 } 函数调用 函数名(实参列表) // 不考虑返回值 返回值 函数名(实参列表) // 考虑返回值 示例代码 //定义的没有参数列表&am…

5个好玩神奇还免费的工具网站收藏不后悔-搜嗖工具箱

生命倒计时 http://www.thismuchlonger.com 这是一个相哇塞的网站&#xff0c;可以让我们静下心来好好想想我们来这个世界究竟为了什么&#xff0c;因为当我们作为命运的主宰者。敲打键盘设定好自己一生长度的时候&#xff0c;我们的剩余寿命已经成绝对值&#xff0c;一旦生命…

mysql5.7配置主从

原理&#xff1a; MySQL主从复制的工作原理如下:1. 主服务器产生Binlog日志当主服务器的数据库发生数据修改操作时,如INSERT、UPDATE、DELETE语句执行,主服务器会记录这些操作的日志信息到二进制日志文件中。2. 从服务器读取Binlog日志 从服务器会向主服务器发送请求,主服务器把…

Linux网络编程——socket 通信基础

Linux网络编程——socket 通信基础 1. socket 介绍2. 字节序2.1 简介2.2 字节序举例2.3 字节序转换函数 3. socket 地址3.1 通用 socket 地址3.2 专用 socket 地址 4. IP地址转换&#xff08;字符串ip -> 整数&#xff0c;主机、网络字节序的转换 &#xff09;5. TCP 通信流…

智能驾驶规划控制理论学习05-车辆运动学规划案例分析

目录 案例一——Hybrid A*&#xff08;基于正向运动学&#xff09; 1、基本思想 2、 实现流程 3、启发函数设计 4、分析扩张&#xff08;Analytic Expansions&#xff09; 5、分级规划&#xff08;Hierarchical planning&#xff09; 案例二——State Lattice Planning&…

Vue3快速上手(十六)Vue3路由传参大全

Vue3路由传参 一、传参的多种方式 1.1 拼接方式 这种方式适合传递单个参数的情况&#xff0c;比如点击查看详情&#xff0c;传个id这样的场景 传参&#xff1a; <RouterLink to"/person?id1" active-class"active">person</RouterLink> …

RabbitMQ相关问题

RabbitMQ相关问题 一、RabbitMQ的核心组件和工作原理&#xff1f;二、如何保证消息可靠投递不丢失的&#xff1f;三、RabbitMQ如何保证消息的幂等性&#xff1f;四、什么是死信队列&#xff1f;死信队列是如何导致的&#xff1f;五、RabbitMQ死信队列是如何导致的&#xff1f;六…

PDF 解析问题调研

说点真实的感受 &#xff1a;网上看啥组件都好&#xff0c;实际测&#xff0c;啥组件都不行。效果好的不开源收费&#xff0c;开源的效果不好。测试下来&#xff0c;发现把组件融合起来&#xff0c;还是能不花钱解决问题的&#xff0c;都是麻烦折腾一些。 这里分享了目前网上能…

数据结构 第3章 栈、队列和数组(一轮习题总结)

第3章 栈、队列和数组 3.1 栈3.2 队列3.3 栈与队列的应用3.4 数组和特殊矩阵 3.1 栈&#xff08;1 10 11 20&#xff09; 3.2 队列&#xff08;6 12 14 17&#xff09; 3.3 栈与队列的应用&#xff08;6 11&#xff09; 3.4 数组和特殊矩阵 3.1 栈 T1 栈和队列具有相同的逻辑…

一周学会Django5 Python Web开发-Django5详细视图DetailView

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计28条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…