抽象类示例(P266)
/*
纯虚函数:
在有些情况下,基类中的某个虚函数给不出一个确切的定义,或者没必要给出详细的定义,那么可以将它声明为一个纯虚函数。--》纯虚函数的作用相当于一个统一的接口形式,表明在基类的各派生类中应该有这样的一个操作,然后在各派生类中具体实现与本派生类相关的操作。
纯虚函数是声明在基类中的虚函数,没有具体的定义,而派生根据实际需要给出各自的定义。纯虚函数只有函数的名字但不具备函数的功能,不能调用基类中的这个函数。
声明纯虚函数的格式:
virtual 函数类型 函数名(参数表)=0;
抽象类:
包含纯虚函数的类称为抽象类。
因为抽象类中有尚未完成的函数定义,所以它不能实例化一个对象。
虽然不能创建抽象类的对象,但可以定义抽象类的指针和引用。这样的指针和引用可以指向并访问派生类的成员,这种访问具有多态性。
抽象类的派生类中,如果没有给出全部纯虚函数的定义,则派生类继续是抽象类。直到派生类中给出全部纯虚函数定义后,它才不再是抽象类,也才能实例化一个对象。
// A a; A *p=new A; A b[2];错误
//A *pa; A*pb = new B;正确
*/
#include <iostream>
using namespace std;
class Location
{
public:
int x, y;
void init(int initx,int inity);
int Getx();
int Gety();
};
void Location::init(int initx, int inity)
{
x = initx;
y = inity;
}
int Location::Getx()
{
return x;
}
int Location::Gety()
{
return y;
}
void display(Location &rL)
{
cout << rL.Getx() << " " << rL.Gety() << endl;
}
int main()
{
Location A[5] = { {5,5},{3,3},{1,1},{2,2},{4,4} };
Location *rA = A;
A[3].init(7,3);
rA->init(7,8);
for (int k = 0; k < 5; k++)
display(*(rA++));
system("pause");
return 1;
}

浙公网安备 33010602011771号