C++类的封装

概述

c++面向对象的三大特性为:封装继承多态
本篇博文讲述的是封装
c++认为,万事万物皆对象,对象就有属性行为
例如
人就是一个对象,人的属性有年龄,身高,外貌等,人的行为有走路,说话等。
具有相同性质的对象,可以抽象为类。人属于人类。

1.封装

封装是c++面向对象的三大特性之一

1.1封装的意义

1.将属性和行为结合在一起,表示事物
2.将属性和行为加以权限控制

1.2声明一个类

声明一个类的形式为:
class 类型名
{
类体

};
类型名最好大写

1.3类体三要素

1.权限
2.属性(成员属性)
3.行为(成员函数)
类体中的属性和行为都统称为成员

2.属性和行为

类的属性就是定义各种类型的变量
C++类的封装
类的行为就是定义或声明各种类型的函数
C++类的封装
类中的任意一个行为都可以对属性进行操作,也就是说一个类中的函数可以任意调用该类中的所有变量。

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类型的