c++类的封装
概述
c++面向对象的三大特性为:封装,继承,多态。
本篇博文讲述的是封装
c++认为,万事万物皆对象,对象就有属性和行为。
例如
人就是一个对象,人的属性有年龄,身高,外貌等,人的行为有走路,说话等。
具有相同性质的对象,可以抽象为类。人属于人类。
1.封装
封装是c++面向对象的三大特性之一
1.1封装的意义
1.将属性和行为结合在一起,表示事物
2.将属性和行为加以权限控制
1.2声明一个类
声明一个类的形式为:
class 类型名
{
类体
};
类型名最好大写
1.3类体三要素
1.权限
2.属性(成员属性)
3.行为(成员函数)
类体中的属性和行为都统称为成员
2.属性和行为
类的属性就是定义各种类型的变量
类的行为就是定义或声明各种类型的函数
类中的任意一个行为都可以对属性进行操作,也就是说一个类中的函数可以任意调用该类中的所有变量。
3.访问权限
3.1种类
类的访问权限共有三种
1.公共权限 :public (类内和类外都能够访问)
2.保护权限 :protected (只有类内可以访问)
3.私有权限 :private (只有类内可以访问)
3.2保护与私有的区别
这涉及到继承的概念
保护:儿子可以访问
私有:儿子不可以访问
4.成员属性私有化
定义成员属性为私有化是非常有必要的,结果就是类外不可以直接访问类内的成员属性。
但是可以间接地访问,而间接访问是对类的成员属性最好的保护,间接访问的方式是:通过public成员函数进而对类内的成员属性进行访问。既然是先访问成员函数,再访问成员属性,那么我们就可以在成员函数中对传进来的参数进行预处理。
所以成员属性私有化的两大优点就出现了
1.将所有成员属性设为私有,可以控制成员属性的读写操作
2.对于写权限,可以检测传入的数据的有效性
成员函数形参的格式
在c语言中,是不可以直接给函数传值,因为函数存在副本机制,a函数想要通过一个b函数对a函数的变量进行修改,只能传递指针。而引用的出现解决了大家对指针的讨厌。
在这,引用不讲,如果对引用有点生疏,可以参考这篇博文。
c++引用的本质
在成员函数中,我们并不想对传入的数据有更改,我们只是想对数据进行引用,如果成员函数的函数体太大,逻辑很复杂的话,我们就很有可能对传入的数据进行操作,因此,为了避免这个问题,在声明形参的时候,加上const。
一般格式:类型名 const &变量名;
5.class和struct的区别
5.1c和c++中struct的区别
在c语言中,struct中的成员能是变量或是数组或是结构体等,但不可以有函数定义或声明
但在c++中,struct中的成员可以是函数定义或声明。
5.2class和struct的区别
class中成员默认为privated类型的
struct中成员默认为public类型的