类和对象的区别在于类是对一个事物的描述和规定,它是对一个事物的蓝图,并不是一个事物的具体实现。而对象是对事物的具体实现。比如,创建一个类,类名称为小汽车,这个类中会规定小汽车有一个方向盘,四个轮子,可以在路上行驶。对这个类进行实例化,也就是创建对象的过程就是实实在在创造出一辆可以开的车,这个车满足类中对小汽车的定义。 Car myCar = new Car(); 抽象类是不能有实例的,因此,抽象类借助指针实例化 Shape * shape = new Square(5); 上面这句话也可以写成 Shape * shape; Square square = new Square(5); shape = & square; 意为创建一个Shape类型的变量 * shape,这个变量是一个指针,指向实例化对象square
#include <iostream>
using namespace std;
class Shape
{
public:
virtual double area() = 0;
};
class Square : public Shape
{
public:
double side;
Square(double side) : side(side) {}
double area()
{
return side * side;
}
};
class Triangle : public Shape
{
public:
double base;
double height;
Triangle(double base, double height) :
base(base), height(height) {}
double area()
{
return 0.5 * base * height;
}
};
int main()
{
Shape *shapes[] =
{
new Square(5),
new Triangle(8,10),
new Square(7),
new Triangle(3,4)
};
for (int i = 0; i < 4; i++)
cout << "Shape " << i << ": " << shapes[i]->area() << endl;
return 0;
}