2020-03-17

C++语法

一、内联函数 inline

1)第一个在c中也会出现,宏看起来像一个函数调用,但是会有隐藏一些难以发现的错误。
2)第二个问题是c++特有的,预处理器不允许访问类的成员,也就是说预处理器宏不能用作类的成员函数
3)内联函数:内联函数为了继承宏函数的效率,没有函数调用时开销,然后又可以像普通函数那样,可以进行参数,返回值类型的安全检查,又可以作为成员函数。内联函数是一个真正的函数,函数的替换 发生在编译阶段
4)任何在类内部定义的函数,自动成为内联函数。

内联函数条件:
1)不能存在任何形式的循环语句
2)不能存在过多的条件判断语句3、函数体不能过于庞大 不能对函数进行取址操作

二、函数的默认(缺省)参数
c++在声明函数原型的时可为一个或者多个参数指定默认(缺省)的参数值,当函数调用的时候如果没有传递该参数值,编译器会自动用默认值代替。

注意:
1、函数的默认参数从左向右,如果一个参数设置了默认参数,那么这个参数之后的参数都必须设置默认参数
2、如果函数声明和函数定义分开写,函数声明和函数定义不能同时设置默认参数
建议:函数声明出设置缺省参数

三、占位参数
1)函数的参数只有类型名 没有形参名,这个参数就是占位参数
2)由于有类型名 所以 函数调用的时候 必须给占位参数传参。
3)由于没有形参名 所以 函数内部 是无法使用占位参数。
void func03(int x,int y,int)
{
cout<<"x = “<<x<<”, y = "<<y<<endl;
return;
}
void test05()
{
//func03(10,30,“hehe”); //err "hehe"和int类型不符
func03(10,30,40);
}

四、函数重载
函数重载:同一个函数名在不同场景下可以具有不同的含义。
函数重载意义:方便的使用函数名。
函数重载的条件: 同一个作用域 参数个数不同 参数类型不同 参数顺序不同(重要)。

注意:
1)函数的返回值类型不能作为函数重载的依据。
2)函数重载和默认参数一起使用,需要额外注意二义性问题的产生。

五、类

  1. 封装
    把变量(属性)和函数(操作)合成一个整体,封装在一个类中,对变量和函数进行访问控制(公有、私有、保护)
    2020-03-17
    class 类名{//抽象的概念 系统不会为其分配空间
    private://私有 类的外部 不可直接访问
    protected://保护 类的外部 不可直接访问 数据
    public://公有 类的外部 可以直接访问 方法 //
    在类的内部 没有权限之分 都可以相互访问
    };