笨鸟先飞学编程系列-C++的封装性
C++的阶段,我想根据 C++的一些特有的特性分别写一些专题,每个专题我都捎带讲一些语法,当然不会很多,
我还是会像 C 语言那样,内存结构贯穿始终,有汇编就有真相……
本专题,我们讲述封装性。封装性是 C++的入门特性,要想学习 C++语言,封装性是首先要掌握的。下面我们进
入正题:
一、 类与对象
早在本系列第一节课(理解程序中的数据)的时候讲述过数据类型与数据的区别和联系当时得出的结论如下:
数据类型规定了数据的大小和表现形式
数据就是电脑中存放的数。
每个数据都有自己的地址,而这些地址可以有变量来代替
因此,数据通常存放于变量(或常量)中
这个结论在 C++中仍然同样适用,类就是我们自己定义的复杂的数据类型,而对象则就是由类声明的变量。
下面我们进入纯语法层面。
1、 类的定义方法
我相信,大家都还记得我在第一节课的时候讲述的结构体的课程,也相信大家没有忘记怎么定义一个结
构体。下面我给出类的定义方法:
class CExample // 是不是很像定义一个结构体
{
private: // 权限控制,相关内容在下面的小节中详细讲述
int m_nFirstNum; // 定义成员变量。也叫属性
int m_nSecNum;
public:
int GetSum() const {return m_nFirstNum} // 成员函数
bool SetNum(int nFirst, int nSec)
{
m_nFirstNum = nFirst;
m_nSecNum = nSec ;
return true;
}
CExample(){m_nFirstNum = 0; m_nSecNum = 0;} //构造函数
~CExample(){} // 空析构
};
当然,上面这个类的定义是不是很像定义一个结构体?只不过多了个 private 和 public 还有一些函数。是
的,C++里面,将结构体升级了,结构体里面可以有函数成员了,为了兼容,换了个关键字,当然,上面的
这个 class 完全可以改成 struct,一点问题都没有。
好奇的朋友会问:如果函数体的语句太多,逻辑复杂了,函数很大,那这个类岂不是很难看,太臃肿了
吧。
是的,为了方便类的组织,也为了协调项目工程中文件的组织。上面的类还可以写成如下的形式:
// .h 文件中写如下的声明部分
class CExample // 是不是很像定义一个结构体
{
private: // 权限控制,防止外面直接操作这些变量,相关内容在下面的小节中详细讲述
int m_nFirstNum; // 定义成员变量。也叫属性