首页  /  C++教程  /  1.类的定义  /  

1.类的定义

点击打开在线编译器,边学边练

什么是类?什么是对象?

对于面向对象的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函数在类里声明后,我们在后面又完整的定义了出来,函数头部分在返回值和函数名之间用类名加::的方式指明这个函数是属于哪个类的。

 

请大家熟悉以上两种用法,然后自行上机理解,根据情况选择。