网站的建站流程,给个能直接看的网址谢谢,在线国内免费crm,wordpress主菜单设置大家好啊#xff0c;这里是c之旅第三弹#xff0c;跟随我的步伐来开始这一篇的学习吧#xff01;
如果有知识性错误#xff0c;欢迎各位指正#xff01;#xff01;一起加油#xff01;#xff01;
创作不易#xff0c;希望大家多多支持哦#xff01; 一.命名空间;…大家好啊这里是c之旅第三弹跟随我的步伐来开始这一篇的学习吧
如果有知识性错误欢迎各位指正一起加油
创作不易希望大家多多支持哦 一.命名空间;
1.命名空间的作用
解决同名实体的冲突问题同名变量可以通过括号的作用域来确定使用的是哪一个变量而函数和类型(比如自定义的结构体类型)则不可以通过作用域来进行区别所以使用命名空间来区分。提供代码的模块化和组织化并提高代码的可读性和可维护性。
2.括号的分类
定义域和作用域
1定义域定义了一个结构体类型这种大括号就是定义域后面加分号
eg
struct MyPoint
{
int x, y;
};//定义域
2作用域函数体和命名空间这种用来区分管理的代码区域的就是作用域后面不加分号
eg:
namespace MyMath
{
int hp;//不建议在命名空间中进行变量的定义因为引用开放命名空间后可能会导致变量的重命名冲突问题这样反而更不好管理代码 //空间成员一般有函数声明类型定义
}//作用域
在自己写命名空间时一般会写在头文件中因为命名空间里面的函数声明和类型定义一般就在头文件中
3.定义命名空间的注意事项
1、命名空间标识符必须满足标识符的命名规则和命名规范习惯名字唯一通常以开发团队的名字项目名来命名
2、命名空间可以在全局也可以在局部命名空间可以接受嵌套定义但不能在函数内和类中定义
(3) 、注意命名污染尽量规避同名的出现如果两个命名空间名同名那么就会合并两个命名空间
4.命名空间的访问
通过作用域运算符 (::) 访问命名空间中的成员
1、using 声明using 命名空间名称 :: 空间成员名称 ;
放开一个成员的可见性这一个成员可以在空间外可见 ( 比较容易避免出现命名污染 )
egusing std::string;
2、using 指示using namespace 命名空间名 ;
放开该命名空间的所有权限所有成员都在空间外可见适用于该空间的大部分成员都需要经常被使用
egusing namespace std;//这个语句在c中经常可以看到这是因为std命名空间是一个c语言标准库中的命名空间
3、命名空间名称 :: 空间成员名称使用时直接访问空间下的某一个成员一般用于该成员不经常使用以及该命名空间也不经常使用的情况
egstd::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;
cinxy;// 从键盘输入
coutx\nyendl;//输出
三.string的使用
1.c中string类型相对于C语言中的字符数组的优点
1、string具有动态大小避免浪费存储空间
2、操作简单比如比较两个字符串是否相等可以用比较
3、有很多方便的字符串处理函数比如获取字符串长度查找子串等等
2.使用string类型代码
#include string#includeiostreamusing namespace std;int main(){string s(123214);//创建s字符串并赋值为123214s.append(x);//string类型中的追加函数用于追加字符串s.append(123); s abc;//字符串也可以直接使用加法来追加s wqsdalfjs;//使用赋值号可以对字符串进行赋值操作s.erase(s.begin() 1);//用于删除字符串指定位置处的字符s.length();//得到字符串的长度s[0];//字符串的首个字符string s1;if (s s1)//可以用来判断两个字符串是否相等{cout1endl;}return 0;}
四.c11的标准:
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 a1;decltype(a)b;//理解为使用a的类型定义了bdecltype((a))ma;//再加一个圆括号给a定义了一别名m
5、for 循环新规则
string strabcdefghijkl;for(auto i:str)// 遍历 str 输出这个只能实现遍历而不能实现循环做某种操作{coutiendl;}
6、类型取别名
using MPint;// 新写法
//区别于C语言中的typedef两者对象顺序是相反的
五,异常处理简讲
try 块监视及捕获异常 catch 块用来处理异常 throw 用来抛出异常
throw 用来抛出某个类型的数据表示异常。在当前层级能被try捕获则匹配当前try后面的catch如果能匹配就处理如果不能匹配往上层级传递