在C++之中,我们使用类来定义自己的数据类型。通过自定义数据类型,可以使我们的编程变得更加方便。或者说C++设计类的目的就是为了使我们可以像使用基本数据类型一样来使用自定义的数据类型。我们知道基本数据类型都有自己相应的库函数,例如char类型的一些相关函数就在string.h这个头文件里面给我们提供了。类也是一样的,它可以定义自己的函数(方法)。下面给出类的声明:
class MyClass
{
//数据成员
int num;
char str[10];
double real;
//函数成员
void show();
};
一个类就想上面这样,由它的数据成员和函数成员共同构成。类相比C语言的结构体,多了函数成员这部分。我们在C语言的结构体之中不能出现函数成员,只有数据成员,但是C语言的结构体里面可以容纳函数指针,我们可以通过函数指针来调用函数。从这个角度来看,C语言也能做到类的功能。等到看完类,我们再来继续这个问题。
c++的类由关键字class来定义,class后面接着是类的名字。类有数据成员和函数成员。这就是直观看上去的类。下面我们继续完善这个类。
class MyClass
{
//数据成员
private: //修饰符
int num[10];
char str;
double real;
//函数成员
public: //修饰符
void show();
protected: //修饰符
};
可以看到有三个成员修饰符,这些修饰符的功能限制了我们使用成员的范围。首先说一下修饰的作用域:从上一个修饰符开始直到下一个修饰符才结束,在此范围之内都是它的作用域。
private:这个修饰符修饰的成员只能在类内被使用,是类私有的成员。
public:它所修饰的成员可以在类内,也可以在类外被使用。是类所公开的成员。
protected:是被保护的成员,只能在类内部使用,或者被子类继承使用。
下面我们来看一下类的函数如何定义:
首先,类的函数可以在类内部定义,如下:
class MyClass
{
//数据成员
private: //修饰符
int num;
char str[10];
double real;
//函数成员
public: //修饰符
void show()
{
cout << num << endl;
cout << str << endl;
cout << double << endl;
}
protected: //修饰符
};
其次,也可以在类的外部定义,如下:
void MyClass::show()
{
cout << num << endl;
cout << str << endl;
cout << double << endl;
}
这样定义,需要注意将函数返回值写在最前面。然后是类名。中间这个符号是作用域运算符,然后是函数名。接着是参数列表,最后是函数体。
下面,我们给MyClass这个类再加上一些东西。然后跑一下这个程序。
#include <iostream>
#include <string.h>
using namespace std;
class MyClass
{
//数据成员
private: //修饰符
int num;
char str;
double real;
//函数成员
public: //修饰符
void show();
void MyClass::set(int a,char * ch,double b);
protected: //修饰符
};
int main()
{
MyClass class1;
class1.set(10,'h',3.14159);
class1.show();
return 0;
}
void MyClass::show()
{
cout << num << endl;
cout << str << endl;
cout << real<< endl;
}
void MyClass::set(int a,char * ch,double b)
{
num = a;
strcpy(&str,ch);
real = b;
}
我们来看一下输出结果:
这就是类。从与现实所对应来看,类抽象了现实事物,它可以描述现实事物。比如:一个人有身高,体重,性别等数量上的特征,就可以抽象为类的数据成员;而一个人的能力,就能抽象为类的方法(函数)。比如,他会弹吉他,下围棋等。这就是他的技能。