纯虚函数:
纯虚函数:在基类中将某一成员函数定为虚函数,并不是基类本身的需要,而是考虑到派生类的需
要,在基类中预留了一个函数名,具体功能留给派生类根据需要去定义。
纯虚函数是在声明虚函数时被“初始化”为0的函数。
一般形式为:
virtual 函数类型 函数名(参数列表)=0;
如:
virtual float area()const=0;
注意:
1、虚函数没有函数体;
2、最后面的“=0”并不表示函数的返回值为0,它只是起形式上的作用,告诉编译器“这是纯虚函
数”;
2、这是一个声明语句,最后应有分号;
要点:
1、纯虚函数只有函数的名字,而不具有函数的功能,不能被调用。可以说他是“徒有其表,而无
其实”。它只是通知编译系统:“这里声明一个虚函数,留待派生类中定义”。在派生类中对此函
数提供定义后,它才能具备函数的功能,可以被调用。
2、纯虚函数的作用是在基类中为其派生类保留一个函数名字,以便派生类根据需要对它定义。如
果在其基类中没有保留函数名字,则无法实现多态性。
3、如果在一个类中声明了纯虚函数,而在其派生类中没有对该函数定义,则该虚函数在派生类中
仍为纯虚函数。
抽象类:
抽象类:不要来定义对象,而只作为一种基本类型用作继承类。由于经常作为基类,通常称为抽象
基类。
注:
1、凡是包含纯虚函数的类都是抽象类。因为纯虚函数不能被调用,包含纯虚函数的类是无法建立
对象的。
2、抽象类的作用是作为一个类族的公共基类,或者说,为一个类族提供一个公共接口。
3、如果在抽象类所派生出的新类中对基类的所有纯虚函数进行了定义,那么这些函数就被赋予了
功能,可以被调用。这个派生类就不是抽象类,而是可以用来定义对象的具体类。
4、如果在派生类中没有对所有的虚函数进行定义,则此派生类仍是抽象类,不能用来定义对象。