对象的本质不过是一种新的数据类型
我们从一个类说起,首先类是一个模型。当我们为这个类创建实例的时候,也就是对象本身。这和前面所讲的定义和使用结构的过程很相似,不同的是对象的内部可以有变量和函数,而结构通常只由各种变量构成。
因此我们首先需要知道的一件事情是如何编写一个简单对象的模型-类
类
类(class)就像是一幅蓝图,它决定一个对象将是什么样子(具有什么样的属性、功能)。
所以OOP过程(面向对象编程过程)的第一步是创建一个类,而每个类跟变量一样都有一个名字,我们就从如何声明一个类说起:
class MyFirstClass
{
};
注意,类名的第一个字母采用大写是一种习惯上的标准,但不是硬性规定。还有在类声明末尾,必须有一个分号,这一点和C++结构情况相同。
类由变量和函数组成,对象将使用那些变量来存储信息,调用那些函数来完成操作。所以人们常常会看到一些专门术语:类里边的变量称为属性,函数称为方法。注意,他们的本质没有改变。
class Car
{
public:
std::string color;
std::string engine;
float gas_tank;
unsigned int wheel;
};
我们需要在声明变量之前先写出单词“public:”
刚刚我们声明了一辆车的属性,现在我们应该让他能跑起来吧?
那我们应该为类定义一些方法,其实也就是定义一些函数罢了。创建个人函数也是两个步骤的过程:先创建函数的原型(声明),再描述函数本身实现过程。
给类添加方法如出一辙:
- 先在类的声明里创建一个方法的原型
- 稍后再实现这个方法
class Car
{
public:
std::string color;
std::string engine;
float gas_tank;
unsigned int wheel;
void fill_tank(float liter); //方法的声明:方法是“加油”,参数是“公升”
};
现在我们的Car类有了一个名为fill_tank方法,它只有一个输入参数,不需要任何返回值。
但是我们只有它的原型(声明),想要使用它,我们还需要对这个函数进行正式的定义(即告诉系统如何实现它)。
方法的定义通常安排在类声明的后面:
#include <iostream>
class Car
{
public:
std::string color;
std::string engine;
float gas_tank;
unsigned int wheel;
void fill_tank(float liter); //方法的声明:方法是“加油”,参数是“公升”
void running(void);
};
void Car::fill_tank(float liter)
{
gas_tank += liter;
}
int main()
{
return 0;
}