什么是类?什么是对象?对于面向对象的C++语言学习,类和对象的理解是整个语言学习中核心的基础。通俗的理解,类其实就是一个模子,是一个变量类型,对象就是这个类型定义出来的具体的变量,就像int a;这句话,int对应类,a就对应对象。这样大家应该就好理解了,但需要注意的是int是C++的内置类型,并不是真正的类。
所以,概括的讲:类是对象的抽象和概括,而对象是类的具体和实例。请大家理解这句话。
那么C++中的类长什么样呢?简单说,C++中类的其实就是包含函数的结构体!因为C++类里面的成员除了可以像C语言的结构体那样包含基本变量以外,还可以包含函数,前者叫做成员变量,后者叫做成员方法。
关键字用class类定义,比如下面定义一个C++的类,学生类:
classStudent{public:intnum;charname[100];intscore;intprint(){cout<<num<<<<name<<<<score;return0;}};
大家可以看到,形式上和C语言的结构体非常像,成员有变量也有函数,今后我们要习惯称之为属性和方法了。值得一提的是大家注意观察还有类里还有一个public的东西,它是控制成员访问权限的一个存取控制属性,除了public以外,还有private、protected一共三种。其中private表示私有,被它声明的成员,仅仅能被该类里的成员访问,外界不能访问,是最封闭的一种权限;protected比private稍微公开一些,除了类内自己的成员可以访问外,它的子类也可以访问(关于子类的概念我们会在后面详细展开);而public声明的成员,则可以被该类的任何对象访问,是完全公开的数据。这里大家简单理解,之后伴随代码一边实验一边体会。值得提醒一下的是,类定义后面还有一个分号,大家注意,不要丢掉!
好了,在认识了类的基本样子以后,下面我们再给大家看另一种写法,我们刚才看的这种写法,成员函数是写在类里的,如果类里的成员函数很多的话,阅读起来就会乱很多,故此,C++还支持另外一种写法,就是成员函数仅在类内声明函数原型,在类外定义函数体,这样在类里可以看到所有成员函数的列表,像目录一样一目了然,规范很多。
在类中声明函数原型的方法与一般C语言的函数原型声明一样,而在类外定义函数的方法,则需要类名加::作用域限定符表示,我们还以刚才的Student类为例,类外定义的代码如下:
classStudent{public:intnum;//学号charname[100];//名字intscore;//成绩intprint();//类内声明print函数};intStudent::print()//在类外定义完整的print函数{cout<<num<<<<name<<<<score;return0;}
大家注意print函数在类里声明后,我们在后面又完整的定义了出来,函数头部分在返回值和函数名之间用类名加::的方式指明这个函数是属于哪个类的。
请大家熟悉以上两种用法,然后自行上机理解,根据情况选择。