本周开始了C++语言的学习,下面是C++基础语法学习内容的一些整理:命名空间、输入输出、带默认值的函数、带占位参数的函数、函数重载、C++引用、new与delete。
1、命名空间:
命名空间用于解决符号名称冲突的方法。
定义:
局部引用eg:MySpace::a (:: 域操作符,用于访问作用域)
全局引用eg:using namespace MySpace;
全局引用部分变量:using namespace MySpace::a;
命名空间取别名:namespace MySpace2 = MySpace;
2、C++输入输出
标准输入对象:cin ,标准输出对象:cout ,换行操作:endl ,输出运算符:<< ,输入运算符:>> 。cin输入类型不匹配会返回空,消除了scanf连续输入多次字符时产生垃圾字符的缺点。设置域宽 :cout.width(5),设置域宽为5。
3、带默认值的函数(即使不传参数也会按默认值参数运行)
规则:1需要添加默认值的参数,直接在参数栏中用等号赋值即可;
2可以所有 或 部分参数设置为默认值;
3只有部分参数有默认值时,带默认值的参数必须放在参数栏末尾;
4默认参数一般在声明时说明,不需要声明、定义两者处都说明。
eg:void addNum(int a, int b = 10, int c = 20)
4、带占位参数的函数(为了函数以后扩展功能)
规则:在函数定义时只写类型,不写变量名,所以无法使用这个参数;调用函数时必须传入这个参数,也可以给它添加默认值。
eg:int sumNum(int a, int b, int = 0)
5、函数重载(提高函数的易用性)
前提条件:同一作用域
规则:1函数名称必须完全相同。
2参数列表必须不同(个数、类型、参数顺序)。
3函数返回值可以相同也可以不同,但仅仅返回值类型不同不足以成为函数重载。
底层原理:编译器会将重载函数设置成不同的函数名,根据参数类型与个数进行匹配。
6、引用(简化指针操作)
引用是给一个变量或者对象取一个别名,对引用操作与对其绑定的变量或对象操作一样(可以理解为是同一个变量或对象)。&号前是一个类型名,则&是引用。主要用于函数传参,也可用于函数返回值,返回的变量必须为静态变量,引用返回的函数可以做左值或右值。
规则:声明引用必须同时初始化,且初始化后不能改变引用空间的位置。引用的类型必须与目标变量或对象的类型一致。不能将已有的引用名作为其他变量或对象的名字或别名。
原理:本质为指针常量int *const p,使用引用时编译器会在底层生成一个指针,并自动*运算。
7、new与delete
new:申请内存并初始化对象。delete:释放内存并销毁对象。
new/delete与malloc/free的区别:
1.malloc/free是C/C+ +标准库函数,new/delete是C++操作符。
2.malloc/free需要手动计算类型大小,且返回void*, new/delete可以自己计算类型大小,根据类型返回相应的类型的指针。
3.new/delete的实现是基于malloc/free。
4.malloc/free只负责分配/释放空间,new/delete会调用构造函数与析构函数,用于初始化对象与销毁对象。