目录
C++是基于面对对象的,它关注的是对象,将一件事情拆分成为不同的对象,靠对象之间的交互完成。
类的引入
C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。比如,用C语言实现的栈,结构体中只能定义变量;现在用C++方式实现时,会发现struct中可以定义变量了。
上面结构体的定义,C++更喜欢的是用class来代替。
类的定义
class为定义类的关键字,classname为类的名字,{}中为类的主体,要注意{}后的分号不能省略。
类体中的内容称为类的成员:类中的变量称为类的属性或者成员变量;类中的函数称为类的方法或者成员函数。
类的两种定义方式
声明和定义放在一起
声明和定义全部放在类体中,需要注意的是,成员函数如果在类体中定义,编译器可能会将其当成内联函数处理。
声明和定义分离
声明放在.h文件中,定义放在.cpp文件中,注意的是,成员函数名前需要加类名::。
一般情况下,最好使用定义和声明分离的方法。
类的访问限定符和封装
类的访问限定符
访问限定符就相当于是一个博物馆是否对外开放的规则。
类有三个访问限定符:
public就是把类里面的东西公开。
protected把类里面的东西保护。
private把类里面的东西私有,不让别人使用。
上图中,因为只有show是公开的,所以我们使用时,只能引用show。
当我们注释掉protected,_age _name也能用了
我们再注释掉 private,这下全都能用了
注意的是:class的默认访问权限是 private,struct的默认权限是public(要兼容C)。
封装
面向对象的三大特性:封装、继承、多态。
我们这里主要介绍封装,什么是封装呢?
封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。
封装的本质是一种管理,让用户更为方便的使用类。
C++中实现封装,可以通过类将数据以及操作数据的方法结合起来,通过访问权限来隐藏对象的内部细节,让类在外部直接被使用。
类的作用域
类定义了一个新的作用域,类的所有成员都在类的作用域中。在类体外定义成员时,需要使用::这个作用域操作符指明成员属于哪个类域。
类的实例化
用类创建对象的过程,称为类的实例化
类是对对象进行描述的,是一个模型一样的东西,限定了类有那些成员,定义出一个类并没有分配实际的内存空间来存储它。
一个类可以实例化出多个对象,实例化出的对象 占用实际的物理空间,存储类成员变量。
这里报错了,因为appletree类没有空间,必须进行实例化才有空间。