一、C++以及C++基本函数
1、面向对象:将能够实现某一事物的万事万物都封装在一起,称之为类,在类中提供公共的接口,用户可以通过公共的接口对类中的相关属性进行控制。
2、C++兼容C,但是C++的编译器比C语言的编译器更加严格。
3、输出流对象cout:来自于ostream的类对象,用于输出使用。
4、输入流对象cin:来自于istream的类对象,用于输入使用。不需要加endl(endl相当于'\n')
5、cout和cin都是自动识别数据的类型
6、cout格式化控制:关键字版本:oct(八进制)、hex(十六进制)、dec(十进制)。
函数版本:setbase(8)、setbase(16)、setbase(10)。
设置输出的宽度printf("%5d\n",m)--->cout<<setw(5)<<right<<m<<endl;
设置填充字符:cout<<setw(5)<<right<<setfill('*')<<m<<endl;
输出小数时默认保留六位有效数字,可以用setprecision保留自定义的有效数字,如果没有使用关键字fixd固定小数点,则setprecision里面的参数是有效数字个数。如果使用关键字fixed固定小数点,则setprecision里面的参数是小数点后几位。
二、命名空间
1、C++中的名字:变量名、函数名、数组名、枚举名、结构体名、共用体名、类名...
2、命名空间机制的作用:解决命名冲突或命名污染问题。
3、使用方法:1>加上命名空间名和作用域限定符::
2>程序的某个地方部提前声明
3>将整个命名空间全部声明
4、定义自己的命名空间:namespace
5、多个命名空间中名字冲突问题:
1>对于产生冲突的名字,需要使用命名空间和作用域限定符进行修饰,没没有产生冲突的名字不需要加。
2>命名空间中的名字和全局变量冲突时候,也需要使用命名空间名和作用域和限定符进行区分。全局变量的名字会默认放入匿名空间中,::
3>命名空间中的名字和局部变量同名时,就近原则访问
6、名字空间中允许嵌套定义,一级一级往下找即可
7、命名空间总结:
1>系统会默认提供一个标准的命名空间std,使用方式有三种。
2>系统运行用户自定义属于自己的命名空间。
3>多个命名空间产生冲突时的解决方式,在名字前面加上命名空间名字和作用域限定符。
4>命名空间允许嵌套定义
5>命名空间中如果有函数,一半在命名空间中进行声明,命名空间外进行定义
6>一个程序中可以出现多个同名的命名空间,编译时系统会自动合成成一个,所以不允许出现同名的相关名字。
三、C++中的字符串 ————————头文件#include<string>
1、C++支持两种语言风格的字符串:C中用字符数组形式存储的的和C++风格的字符串(string类)。
2、初始化和赋值:赋值:‘=’、(“内容”)、{"内容"}、(5,'A'),空内容时大小:32,
拷贝:string s2(s1); 2=1+1;string = s1+s2;
3、C风格和C++风格的字符串互换
1、C++兼容C的语法,C风格不需转换
2、C++--->C :c_str()、data() 例:string s2; strcmp(s1,s2.c_str()); strcpy(s1,s2.data())
4、string类中三个重要成员函数
1、size()或者length():求字符串的实际长度,相当于C语言中的strlen;s1.size()/s1.length()
2、empty();判空
3、clear();清空
5、string类型的成员访问at():做越界检查,友好;[ ]不做越界检查,不友好
6、string类型数据的输入:1>不带空格的输入:cin
2>带空格的输入:getline(),关键字
四、bool类型
1、类型不支持bool类型,但是C++支持
2、bool类型的值只有两个:true(非0数组)、false(0)
3、true和false这两个属于关键字,是真和假的常量,不可用作标识符号
4、bool类型的数据,默认使用数字标识真假,如果想要使用单词标识真假,则需要加上boolapha,在此之后全部都使用单词标识,如果想要继续使用数字表示真假,则需要加上noboolalpha即可。
5、bool类型所占内存大小为1字节,原则上只需要使用1为即可,但是计算机分配资源的基本单位为1字节,所以给bool类型分配1字节大小的空间。
五、左值引用
1、引用概念(作用):相当于给变量的内存空间重新起个别名。
2、格式:数据类型 &引用木名 = 引用的目标;
3、总计&符号的用途:逻辑与、按位与、取地址、定义引用。
4、左值:可以放在左侧也可以放在右侧。右值:只可以放在右侧。
5、使用要求:1、定义引用时,必须用其引用的目标对其初始化。
2、引用的目标一旦指定,在程序中就不能对其进行更改了。
3、引用与其目标是同一空间,其大小、地址均和目标一致。
4、一个目标可以有多个引用。
6、引用做形参:无需考虑地址传递还是值传递的问题。
7、引用做返回值:1、普通数据的返回值是值返回,只能做右值使用。
2、引用可以作为函数的返回值,引用函数可以做左值使用。
3、引用函数必须返回生命周期比较长的内存空间:全局变量、静态局部 变量、堆区空间中的内存、主调函数通过地址传递进来的形参的空间。
8、常引用const,1、const修饰的成员,为了保护数据不被修改。
2、const修饰引用,不能通过引用名改变目标的值,但是可以通过目标本身进行改变。 3、定义格式:const数据类型&引用名=引用目标。
9******重点*****
1、引用不占用内存空间,引用的空间和目标一致,但是指针分配8字节内存。
2、定义引用时必须初始化,而指针不用。
3、引用的目标一旦指定,后期不能更改,但是指针可以。
4、使用指针之前需要进行合法性检查,但是引用不需要。
5、有多级指针,但是没有多级应用。
6、有指针数组,没有引用数组。