C++学习(2)
一、设计类 (抽象类)
Class 类名
{
Public 公共权限
设置成员属性
设置成员函数
}
使用类 创建对象 实例化对象
类名 对象名
通过对象来设置属性,调用成员函数
类和对象关系(类是对象的抽象;对象是类的实例)
二、内联函数的引出
内联函数:初定义的概念用内联函数来实现,代替宏
内联函数声明:
inline void func()
如果函数实现时,没加inline,那这个函数依旧不算内联函数
类内部的成员函数,默认前面会加inline关键字
限制:
- 不能存在任何形式的循环语句
- 不能存在过多的条件判断语句
- 函数体不能过于庞大
- 不能对函数进行取址操作
三、函数的默认参数
参数可以有默认值
写法: 参数后面=………
注:如果有一个位置有默认参数,那么该位置从左到右必须有默认参数
默认参数,如果有参数,就用传入参数,没有就用默认值
函数占位参数:如果有了占位参数,函数调用时就必须要提供这个参数,但用不止占位参数可以有默认值
如果函数声明里有了默认参数,那函数实现时就没有默认参数
函数声明和实现里只能有一个默认参数,不能同时出现默认参数
四、函数重载
实现重载条件:
函数名称可以重复;
必须在同一个作用域
函数参数:个数不同,类型不同,顺序不同;
返回值不可以作为函数重载条件
(当函数重载遇到默认函数,要注意避免二义性)
Const也可以作为重载条件
五、extern C浅析
在C++中函数可以发送重载,编译器会改变函数名称。解决了C++文件中调用C语言的代码
Ifdef_cplusplus extern”C”
六、C语言和C++封装区别
C语言封装属性(变量)和操作(函数)分开处理
C++中的封装严格类型转换检测,让属性和操作绑定
控制权限:
Public 公共权限;protected 保护权限;private 私有权限
若不声明权限,默认private
Struct的默认权限为public;class的默认权限是private;
Struct和class是一个意思,唯一不同的是默认权限不同
所谓私有权限,就是私有成员(属性,函数)在类内部可以访问,类外部不可以访问(子类也不可以)
公共权限类内部、类外部都可以访问
保护权限类内部可以访问(当前类的子类可以访问),类外部不可以访问
建议成员变量设置为private,自己提供公共对外接口,进行set和get方法访问
七、面向对象程序设计
对象的构造和析构
构造:初始化
析构:清理
构造函数的写法:与类名相同,没有返回值,不写void;、,可以发生重载(可以有参数);编译器自动调用,不是手动调用,而且只会调用一次
析构函数:
与类名相同,类名前加“~”也没有返回值,不写void,不可以有参数,不可以发生重载;自动调用,只调用一次
如果没有提供构造函数和析构函数,系统默认调用,空实现
构造和析构必须到public下才可以调用
八、构造函数的分类和调用
分类:
按照参数分类,无参数构造函数(默认);有参数构造函数
按照类型分类,普通构造函数;拷贝构造函数
拷贝构造函数:
类名person( const person&p)