c++ 虚函数 纯虚函数 抽象类
2012-12-12 13:27
267 查看
虚函数:
声明虚函数的方法是在基类的成员函数原型前加上关键字virtual。简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。
其格式如下:
只需改变基类
class 类名
{......
virtual 类型 函数名 (参数表):
.......
};
纯虚函数:
在基类中只声明虚函数而不给出具体的函数定义体,将它的具体定义放在各派生类中,称此虚函数为纯虚函数。
通过该基类的指针或引用就可以调用所有派生类的虚函数,基类只是用于继承,仅作为一个接口,具体功能在派生类中实现。
形式:
virtual 类型 函数名(参数表)=0;
抽象类:
带有纯虚函数的类成为抽象类:
class 类名
{
virtual 类型 函数名(参数表)=0;//纯虚函数
..........
};
注意:
不能声明抽象类的对象,但可以声明指向抽象类的指针变量和引用变量。
引入抽象类的目的,主要是为了能将相关类组织在一个类继承结构中,并通过抽象类来为这些相关类提供统一的操作接口。
举例说明:
声明一个动物类
声明一个猫类继承与动物类
声明一个Dog类继承与Aniaml类
mian类
声明虚函数的方法是在基类的成员函数原型前加上关键字virtual。简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。
其格式如下:
只需改变基类
class 类名
{......
virtual 类型 函数名 (参数表):
.......
};
纯虚函数:
在基类中只声明虚函数而不给出具体的函数定义体,将它的具体定义放在各派生类中,称此虚函数为纯虚函数。
通过该基类的指针或引用就可以调用所有派生类的虚函数,基类只是用于继承,仅作为一个接口,具体功能在派生类中实现。
形式:
virtual 类型 函数名(参数表)=0;
抽象类:
带有纯虚函数的类成为抽象类:
class 类名
{
virtual 类型 函数名(参数表)=0;//纯虚函数
..........
};
注意:
不能声明抽象类的对象,但可以声明指向抽象类的指针变量和引用变量。
引入抽象类的目的,主要是为了能将相关类组织在一个类继承结构中,并通过抽象类来为这些相关类提供统一的操作接口。
举例说明:
声明一个动物类
#ifndef Animal_H #define Animal_H #include <iostream> using namespace std; class Animal { public: virtual void cry()=0; virtual void action()=0; //{cout<<"zooooo"<<endl;} }; #endif
声明一个猫类继承与动物类
#include "animal.h" class Cat:public Animal { public: void cry(){cout<<"miaomiao"<<endl;} void action(){cout<<"pashu"<<endl;} };
声明一个Dog类继承与Aniaml类
#include "animal.h" class Dog:public Animal { public: void cry(){cout<<"wangwang"<<endl;} void action(){cout<<"zuandong"<<endl;} };
mian类
#include "animal.h" #include "cat.h" #include "dog.h" void display(Animal &p); void main() { //Animal a; Cat c; Dog d; //c=new Cat(); //d=new Dog(); //display(a); display(c); display(d); //c.cry(); } void display(Animal &p) { p.cry(); p.action(); }
相关文章推荐
- C++的虚基类,抽象类,虚函数,纯虚函数,virtual
- C++虚函数virtual,纯虚函数pure virtual和Java抽象函数abstract,接口interface与抽象类abstract class的比较
- C++学习之路—多态性与虚函数(二)纯虚函数与抽象类
- C++的虚基类,抽象类,虚函数,纯虚函数,virtual
- C++与C#中的虚函数、纯虚函数、抽象类的对比
- 多态,虚函数,纯虚函数,抽象类的相关问题(c++面试常见题目)
- C++多态、虚函数、纯虚函数、抽象类
- C++ 虚函数、纯虚函数、抽象类、接口、虚基类
- C++的虚基类,抽象类,虚函数,纯虚函数,virtual
- c++中抽象类、虚函数和纯虚函数的学习
- C++中如何实现像Java中接口功能--C++抽象类(纯虚函数,虚函数)
- c++基础10:继承和派生 虚函数的作用 多态性概念 纯虚函数和抽象类的概念
- C++虚函数,纯虚函数,抽象类
- c++虚函数,纯虚函数,抽象类,覆盖,重载,隐藏
- C++ 抽象类(虚函数与纯虚函数)
- C++的虚基类,抽象类,虚函数,纯虚函数,virtual
- C++ 虚基类、虚函数、纯虚函数、抽象类
- 读书笔记--C++程序设计(第2版)--12多态性与虚函数(虚析构函数,纯虚函数与抽象类)
- C++的虚基类,抽象类,虚函数,纯虚函数,virtual
- C++中的多态-虚函数-纯虚函数-抽象类