C++ day1

C和C++的区别 :

C++的头文件没有.h,C++对C语法做了兼容;所以C的头文件中仍然可以在C++文件中使用,一般去掉C钟头文件的 .h在前面加上c

拓展名的区别:

C语言:使用gcc编译器

C++  .cpp , .C ----> 使用g++编译器,g++必gcc编译器语法更加严格(主函数的返回值类型不能修改)

语法区别(语法的扩充)

1命名空间

2函数重载(一名多用)

3字符串的使用(string 类型)

4引用(和C中的指针类似)

5面向对象的特征(封装,继承和多态)C++是面向对象的语言

6 STL标准模板库

7模板编程

8智能指针

9 lambda表达式

输入输出流类

  1. 输出  cout

Cout 是ostream类提供的类对象,printf是c库中 的函数

Cout可以实现级联的输出(连续输出多个)

如果使用cout,需要倒入头文件<iostream>,引入 命名空间std

  1. cout控制格式的输出

通过关键字控制输出格式,或者通过函数控制 输出格式  #include<iomanip>

Setbase(); 控制进制输出

Setw();控制宽度输出 ----->left关键字

Setprecison();控制包含小数点在内的点位数输出

【2】输入  cin

是istream输入流提供的类对象

在istream中对>>运算符进行了运算符重载,>>变成输入运算符

仍然不需要格式符,会根据类型自动推导

  1.  Cin 的基本使用
  2. 不需要格式符来控制输入的类型,可以级联的输入

命名空间

Namespace  命名空间名

#include <iostream>

using  namespace   std;  导入标准命名空间

Namespace   自己定义的命名空间

如何使用命名空间中的标识符

定义在命名空间中的标识符,不能直接使用,需要导入后再使用

全局导入命名空间

Using namespace 命名空间名;----->该语句表示,导入命名空间中的所有标识符,在该语句后面,命名空间中的所有标识符可以任意使用

局部导入命名空间

Using  namespace  命名空间名; --->该语句表示,导入命名空间中的所有标识符,在该语句后面,命名空间中的所有标识符可以任意使用(一般写在头文件下方,主函数上方)

局部导入命名空间中标识符

------>   :: 域限定符

在那个位置使用标识符,就在那个位置导入标识符

导入命名空间中的部分标识符

使用using  命名空名 ::表识符号;  ----->在该语句后,可以使用导入的指定标识符

在命名空间中声明函数,在命名空间外定义函数,需要在函数名前加上命名空间名 ::函数名

命名冲突问题

当同时可以访问两个同名标识符时发生命名冲突。

命名空间和局部变量冲突

如果不导入命名空间  ,不会发生冲突

即使导入了命名空间,默认访问局部变量,也不发生访问的冲突

如果导入命名空间以后,想要访问明明空间中的标识符,在标识符前加上明明明空间名

命名冲突和全局变量冲突

如果不导入命名空间中的标识符,不会发生冲突,直接访问全局变量。导入命名空间中标识符后发生冲突;

1 访问命名空间中的标识符:命名空间名 : 标识符号

访问全局变量  :: 标识符号(访问全局变量)

两个命名空间中的标识符 冲突

必须是在同时导入了两个命名空间时才会发生标识符冲突

解决方式  命名空间名 ::标识符    ------>   直接指向访问某一个命名看空间中的标识符

匿名空间

没有名字的命名空间就叫做匿名空间

匿名空间中的标识符,无需使用using 导入,也可以访问

如果发生冲突,可以使用 ::标识符号,来访问匿名空间的标识符

如果存在命名空间和匿名空间标识冲突的情况,(尽量不要导入有名字的命名空间中的标识符)

如果匿名空间和全局变量冲突  ::标识符号(默认访问全局变量)

命名空间的添加

如果定义了同名的命名空间,会自动到合并同一个命名空间

将后续定义的内容添加到原来的命名空间当中

命名空间的嵌套,当存在嵌套命名空间时,只需要根据定义顺序,通过域限定符一层一层访问下去即可

命名空间的重命名

namespace  新名字  =旧名字

在该语句后,新名字和旧名字都可以继续使用

字符串的使用 (string 类)

String 类 :是 C++中封装好的一个类,C++中封装了string 类型用于定义字符串

定义字符串  : string 变量名

C和C++字符串的转化

C的字符串可以直接转换成C++的字符串

而C++的字符串不能直接转换成为C风格的字符串,需要借助与特殊函数data(), c_str();//这两个函数的返回值,都是char*类型的指针

String类中常用的函数

  1. at ()

按位置访问字符串,使用at 访问字符串时超出字符串范围代码会抛出异常

at函数在访问越界是报错

II) empty() /clear()

empty() : 判断字符串是否为空

Clear();清空字符串

Iii)length()   size()

计算字符串的长度

 String类型可以直接使用运算符进行比较(因为在string 类中对运算符进行了重载)

输入字符串

直接使用cin不能获取带空格的字符串,所以使用getline()函数获取带空格的字符串

Getline()的两个参数  ,第一个参数是输入流对象,第二个参数是输入的字符串变量

C++中的bool类型

C不支持bool类型,但是C++中直接支持bool类型,结果是一个逻辑值,非0即1,true和flase

bool类型的变量可以使用true 和flase赋值,也可以使用数值赋值

cout输出时,默认使用数字表示法输出bool类型的值

如果使用单词输出bool类型的值,在输出是加上boolalpha,想要恢复数字表示法加上noboolalpha

Bool类型的大小1byte,因为计算机分配内存的基本单位是字节

  • 9
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值