面向对象基础
类
引入
- c++ 是一门面向对象编程的语言
- 在C语言中程序 是由算法与数据结构组成的,在C++ 中可以说程序是由对象组成的 对象 == 数据 + 算法
- C ++ 具有三大特性 封装(C++具有集合性 由类来体现 类是有一类具体事务抽向出来的,是对数据和算法的封装 ,类可以实例化为对象) , 继承(在C++中为了提供代码的重用性,支持类的继承,子类可以继承父类的共有的和父类中受保护的成员),多态(允许将子类类型的指针赋值给父类,给与父类接口多种实现方式)
在C++中所有动作必须由对象调用,对象是实体是实际存在的
成员访问修饰符
- public:(公共的) 这在任何地方可以使用
- protected(受保护的):仅本类和奔=本类的派生类可见
- private:(私有的):仅本类可以使用
注:类与结构体小区别:结体成员默认共有的 , 类成员默认私有的
接口函数
set() 和 get() 在外部提供使用使用内部数据的接口
接口:规定别人必须按照我的规划执行
目的:
- 所有完成这件事的方法屏蔽
- 提供一个唯一可以完成这件是的接口
构造函数
可以由一个或者多个,在定义实例化对象时只调用一个,如果类中没写会调用一个默认的构造函数
构造函数可以传参数
析构函数
回收对象所占有的空间(堆区空间)
删除类中指针成员在堆指向的空间,句柄成员也要在析构函数中删除
对象的生命周期结束,自动调用会析构函数,,一个类中只能有一个析构函数
类中初始空间分配
- 类中没有数据成员时,类的类型长度是一字节,是占位符
- 类中数据成员变量是在生成对象时占用空间的
- 类中的方法成员实在类的编译时生成的存在的属于代码段,存在于字符常量区
this指针
- 在C++ 中在使用类的方法时,因为方法实现存在,可以使用指针访问
- this指针是C++ 自动生成指向本类或者本对象的指针
- C++ 中的成员方法是由隐藏默认参数的 是 类名 * this
this 的默认值是调用当前方法对象的首地址
初始化列表
// 语法 构造函数(参数):初始化列表 参数(值)
//{
//}
// 在{} 内部的是赋值不是真正的初始化,初始化列表中的才是真正的初始化
初始化顺序是按照定义的顺序初始化的,谁先定义谁先初始化
注:const 成员只能在初始化列表中初始化
const 函数 与 类中的常成员
const 类型 * 被指向空间不可修改
类型 const * 所指方向不可以修改
- 常数据——只能在初始化成员列表中赋初值
- 常函数——不能修改参数数据
- 常对象——只能调用常方法
原因:对象属性发生变化所有指针变为 const 类型 * 所指向空间内的值变为不可修改
类中的static成员
- 静态数据成员——必须在类外以与调用的方式进行初始化
- 静态函数——只能使用静态数据——因为没有实列化时也可以使用静态函数
- 使用原因: 保证所有对象中的同一个数据一致 , 不是是每个对象都保存这个变变量,程序中只有一份
- 使用时可以用对象名访问,也可以用类名访问,通俗的说就是静态数据成员时是属于类的
- 静态成员函数中没有默认的this 指针成员 ,主要用于访问静态成员,也是属于类的成员
内联函数inline
相当于宏(直接替换过来)直接将函数体替换到当前位置,节约函数调用的时间
在C++ 头文件件中直接定义的函数默认为内联函数
使用时,代码简单调用时间少,有点节约调用时间
友员关系
- 函数函数
- 友员类
对朋友公开自己私有的或者受保护的成员