C++在C语言的基础上扩充了面向对象的概念
缺省参数
什么是缺省参数
缺省参数即函数参数的默认参数值,作用是为函数参数给一个默认值。该默认值就是你不传参的时候,编译器会自动用这个默认值代替
缺省参数的分类
全缺省参数
定义:即函数中的所有参数都有一个默认值
半缺省参数
即给函数参数部分默认值。注意,并不是给一半的默认值
注意事项
第一
半缺省参数,从右边到左边必须连续,不能这样
第二
分文件编写时,函数定义和函数声明不能同时都有缺省参数
报错如下
第三
缺省值必须是常量或者全局变量
第四
C语言并不支持缺省参数这一语法
函数重载
C++允许在同一个作用域里面声明几个类似的同名函数,这些函数的形参列表(参数个数,类型,顺序)必须不同。C语言不支持函数重载
注意:函数重载的参数个数、参数类型、参数顺序必须有一个不同
int f(int a,int b,int c) { cout<<a<<endl; } int f(double a,int b,int c) { cout<<a<<endl; } //参数类型不同构成重载 int f(int a,int b) { cout<<a<<endl; } int f(int a) { cout<<a<<endl; } //参数个数不同构成重载 int f(int a,double b) { cout<<a<<endl; } int f(double a,int b) { cout<<a<<endl; } //参数顺序不同构成重载 int f(int a,int b) { cout<<a<<endl; } int f(int b,int a) { cout<<a<<endl; } //不够成函数重载
引用和指针
引用:给已存在的变量取一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共同用同一块内存空间
指针:指针变量用来存放变量的地址,需要开辟额外的空间
区别
初始化:引用在定义的时候必须初始化,指针则没有要求(尽量初始化,防止野指针)
引用在初始化一个实体之后,就不能再引用其他的实体,而指针可以在任意时候指向一个同类型实体
对const的引用
本来引用类型和变量类型必须是一致的,但是为什么这里不会报错呢?这中间到底发生了什么?
const double tmp=a; const double& b=tmp; //在这张情况下,b绑定了一个临时量对象。这个临时量对象需要编译器开辟一个额外的空间来存储
//在函数中,如果形参不需要改变,最好用一个const来修饰 void func(const int& a) { }
权限可以缩小,但是不可以放大
内联函数inline
用inline修饰的函数,在调用时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销,提升了程序的运行效率(如果是递归调用该函数则用inline修饰后基本上没有作用)