- 设计一个类,求圆的周长
- class + 类名 { 成员变量 成员函数 }
- 公共权限 public
- 设计成员属性
- 半径 int m_R
- 设计成员函数
- 获取圆周长 int calculateZC(){}
- 获取圆半径 int getR()
- 设置圆半径 void setR()
- 通过类创建对象过程 称为 实例化对象
- 内联函数
- 内联函数引出---宏缺陷
- 宏缺陷:
- 必须要加括号保证运算完整
- 即使加括号,有些运算依然与预期结果不符
- 普通函数不会出现缺陷
- C++提供 内联函数代替宏函数
- 关键字 inline
- 在函数声明和实现中同时加入关键字 inline 才称为内联
- 在成员函数前 都隐式加了关键字inline
- 有些特殊情况下 ,写了关键字inline也不会按照内联方式处理
- 出现循环
- 出现判断
- 函数体过于庞大
- 对函数进行取地址
- 总结: 内联函数只是给编译器一个建议,但是编译器不一定接受这个建议,好的编译器会自己给短小的函数前加上关键字inline
- 函数的默认参数和占位参数
- 默认参数
- 可以给函数的形参添加默认值
- 语法 形参 类型 变量 = 默认值
- int func(int a, int b = 10 , int c = 10)
- 注意事项 ,如果有一个位置有了默认参数,那么从这个位置起,从左到右都必须有默认值
- 函数的声明和实现 只能有一个 提供默认参数,不可以同时加默认参数
- 占位参数
- 只写一个类型进行占位,调用时候必须要传入占位值
- void func2(int a , int = 1)
- 占位参数也可以有默认值
- 函数重载
- 满足条件
- 同一个作用域下
- 函数名称相同
- 函数参数个数、类型、顺序不同
- 函数的返回值 不可以作为重载条件
- 注意事项
- 加const和不加const的引用可以作为重载条件
- 函数重载碰到默认参数 注意避免二义性出现
- extern C 浅析
- 用途:在C++中调用C语言文件
- C++中有函数重载,会对函数名称做修饰,导致调用C语言的函数链接失败
- 利用extern C可以解决问题
- 方法1:
- 在C++代码中加入
- 告诉编译器 show函数用C语言方式 做链接
- //extern "C" void show();
- 方法2:
- 在C语言的头文件中加入6行代码
- #ifdef __cplusplus // 两个下划线 __ c plus plus
- extern "C" {
- #endif
- #ifdef __cplusplus // 两个下划线 __ c plus plus
- }
- #endif
- 封装
- C语言的封装
- 缺陷 将属性和行为分离
- C++语言的封装
- 将属性和行为作为一个整体,来表现生活中的事物
- 将属性和行为 加以权限控制
- 访问权限
- 公共权限 public 类内 类外 都可以访问
- 私有权限 private 类内可以访问 类外不可以访问
- 保护权限 protected类内可以访问 类外不可以访问
- class 默认权限 私有权限 而 struct默认权限是 公共权限
- 尽量将成员属性设置为私有
- 自己可以控制读写权限
- 可以对设置内容 加有效性验证
01-05