设计类、求圆的周长
关键字 class
class + 类名
{
属性 :
行为:
}
类的构成 : 成员函数 + 成员属性
作用域 public :公共作用域
测试:
给对象赋值
内联函数
内联函数的引出
宏函数必须保证运算完整性,加括号
宏函数即使加括号,有些情况依然和预期不符合
宏函数也不重视作用域
内联函数 inline
函数声明和实现必须同时加inline 才算内联函数
类内部成员函数 编译器默认前面加了inline关键字
内联函数和编译器关系
加入内联后只是对编译器的一个建议,有些情况编译器依然不会按照内联方式 处理
一个好的编译器,会将短小的函数 隐性的加入inline关键字
(正常调用函数需要用到栈开辟空间保存主函数信息,然后执行子函数,而内联函数拥有了宏函数的优点:短小的函数不需要调用子函数,而是把调用它的地方直接替换)
函数的默认参数以及占位符
默认参数
在形参后面 = 默认值
如果参数列表中 有一位置有了默认参数,那么从这个位置从左到右都必须有默 认参数
函数的声明和实现 只能有一个默认参数
占位参数
函数参数列表中(int)只写类型,调用必须要传入参数调用
占位参数也可以有默认参数(int = 0)
占位参数在符号重载会用到
函数重载
满足条件
同一个作用域,函数名称相同
函数参数、类型、个数、顺序不同
函数的返回值不同 不可以做为重载条件
引用 加入const 和不加 const也可以作为重载条件
函数重载遇到函数默认参数 避免二义性
C++中允许同名但是参数不同的函数存在,使用时根据传递的参数确定使用那个函数
extern C浅析
函数重载原理 C++编译器在底层会将函数名字进行修饰,方便内部访问
用途 : 在C++下运行C语言文件
#ifdef __cplusplus
extern “C”{
#endif
//中间是C语言代码
#ifdef __cplusplus
}
#endif
类的封装
C语言的封装
缺点1:C语言下没有做类型转换的检测
缺点2:将属性和行为分开
C++封装
将属性和行为作为一个整体,来表现生活的事物
将这些成员 加以权限控制
权限
piblic 公共权限
protected 保护权限
private 私有权限
C++中strcut 和 class区别
strcut 默认public权限
class 默认private权限
领取专属 10元无门槛券
私享最新 技术干货