什么是类?什么是对象?对于面向对象的C++语言学习,类和对象的理解是整个语言学习中核心的基础。通俗的理解,类其实就是一个模子,是一个变量类型,对象就是这个类型定义出来的具体的变量,就像int a;这句话,int对应类,a就对应对象。这样大家应该就好理解了,但需要注意的是int是C++的内置类型,并不是真正的类。
所以,概括的讲:类是对象的抽象和概括,而对象是类的具体和实例。请大家理解这句话。
那么C++中的类长什么样呢?简单说,C++中类的其实就是包含函数的结构体!因为C++类里面的成员除了可以像C语言的结构体那样包含基本变量以外,还可以包含函数,前者叫做成员变量,后者叫做成员方法。
关键字用class类定义,比如下面定义一个C++的类,学生类:
class Student { public: int num; char name[100]; int score; int print() { cout<<num<<" "<<name<<" "<<score; return 0; } };
大家可以看到,形式上和C语言的结构体非常像,成员有变量也有函数,今后我们要习惯称之为属性和方法了。值得一提的是大家注意观察还有类里还有一个public的东西,它是控制成员访问权限的一个存取控制属性,除了public以外,还有private、protected一共三种。其中private表示私有,被它声明的成员,仅仅能被该类里的成员访问,外界不能访问,是最封闭的一种权限;protected比private稍微公开一些,除了类内自己的成员可以访问外,它的子类也可以访问(关于子类的概念我们会在后面详细展开);而public声明的成员,则可以被该类的任何对象访问,是完全公开的数据。这里大家简单理解,之后伴随代码一边实验一边体会。值得提醒一下的是,类定义后面还有一个分号,大家注意,不要丢掉!
好了,在认识了类的基本样子以后,下面我们再给大家看另一种写法,我们刚才看的这种写法,成员函数是写在类里的,如果类里的成员函数很多的话,阅读起来就会乱很多,故此,C++还支持另外一种写法,就是成员函数仅在类内声明函数原型,在类外定义函数体,这样在类里可以看到所有成员函数的列表,像目录一样一目了然,规范很多。
在类中声明函数原型的方法与一般C语言的函数原型声明一样,而在类外定义函数的方法,则需要类名加::作用域限定符表示,我们还以刚才的Student类为例,类外定义的代码如下:
class Student { public: int num;//学号 char name[100];//名字 int score;//成绩 int print();//类内声明print函数 }; int Student::print()//在类外定义完整的print函数 { cout<<num<<" "<<name<<" "<<score; return 0; }
大家注意print函数在类里声明后,我们在后面又完整的定义了出来,函数头部分在返回值和函数名之间用类名加::的方式指明这个函数是属于哪个类的。
请大家熟悉以上两种用法,然后自行上机理解,根据情况选择。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程