C++抽象类与纯虚函数实战举例

虚函数与纯虚函数请参考:http://blog.csdn.net/hackbuteer1/article/details/7558868

#include <iostream>

using namespace std;

class Animal
{
public:
    virtual void eat()=0;
    virtual void sleep()=0;
};
class Cat:public Animal
{
public:
    void eat()
    {
        cout<<"The cat is eating now."<<endl;
    }
    void sleep()
    {
        cout<<"The cat is sleeping now."<<endl;
    }
};
class Bear:public Animal
{
public:
    void eat()
    {
        cout<<"The bear is eating now."<<endl;
    }
    void sleep()
    {
        cout<<"The bear is sleeping now."<<endl;
    }
};

class Panda:public Cat,public Bear
{
public:
    void eat()
    {
        cout<<"The panda is eating now."<<endl;
    }
    void sleep()
    {
        cout<<"The panda is sleeping now."<<endl;
    }
};

void show(Cat *p)
{
    cout<<"========================"<<endl;
    p->eat();
    p->sleep();
    cout<<"========================"<<endl;
}
int main(int argc, char *argv[])
{
    Cat *p;
    Cat c;
    Panda d;

    p=&c;
    show(p);

    p=&d;
    show(p);

    return 0;
}

时间: 2024-08-02 11:02:02

C++抽象类与纯虚函数实战举例的相关文章

【C/C++学院】0823-静态联合编译与动态联合编译/父类指针子类指针释放/虚函数/纯虚函数概念以及虚析构函数/抽象类与纯虚函数以及应用/虚函数原理/虚函数分层以及异质链表/类模板的概念以及应用

静态联合编译与动态联合编译 #include <iostream> #include <stdlib.h> //散列 void go(int num) { } void go(char *str) { } //class //::在一个类中 class A { public: void go(int num) { } void go(char *str) { } }; void main() { ///auto p = go;编译的阶段,静态联编 void(*p1)(char *s

C++中的抽象类及纯虚函数的实现与否

1.含有纯虚函数的叫抽象类 2.抽象类(一般是基类)中的纯虚函数无论函数体实现与否,都没有关系,系统会自动忽略 3.继承自抽象类的子类,必须要实现父类的纯虚函数才可以实例化对象 4.抽象类不允许实例化对象,只能作为一个基类或虚接口使用 5.抽象类的指针可以指向不同的派生类对象(虚函数的功能) class Father{ public: virtual void fun() = 0{ int a = 10; };//抽象类中的纯虚函数,函数体实现了也相当于没实现,自动忽略 }; Father f;

c++抽象类和纯虚函数

抽象类是为了抽象和设计的目的而建立的,处于继承层次结构的上层. 具体类是能够建立对象的类. (1)抽象类只能用作其他类的基类,不能建立抽象类对象. (2)抽象类不能用作参数类型.函数返回类型或显式转换的类型. (3)可以定义指向抽象类的指针和引用,此指针可以指向它的派生类,进而实现多态 纯虚函数是被标明为不具体实现的虚函数 virtual 类型 函数名(参数名)=0; 纯虚函数的实现留给该基类的派生类去做.

抽象类与纯虚函数

          一.啥是抽象类? 含有纯虚函数的类被称为抽象类.抽象类是一种特殊的类,它是为了抽象和设计的目的而建立的,它处于继承结构的上层.抽象类是不能定义对象的,在实际中为了强调一个类是抽象类,可将该类的构造函数说明为受保护的访问控制权限. 抽象类的主要作用就是描述一组相关子类的通用操作接口.一般而言,抽象类只描述这组子类共同的操作接口,而实现交给子类来完成. 抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出.如果派生类没有重新定义纯虚函数,而派生类只是继承基类的纯虚函数,则这个派

c++抽象类,纯虚函数

C++虚函数virtual,纯虚函数pure virtual和Java抽象函数abstract,接口interface与抽象类abstract class的比较

由于C++和Java都是面向对象的编程语言,它们的多态性就分别靠虚函数和抽象函数来实现. C++的虚函数可以在子类中重写,调用是根据实际的对象来判别的,而不是通过指针类型(普通函数的调用是根据当前指针类型来判断的).纯虚函数是一种在父函数中只定义而不实现的一种函数,不能用来声明对象,也可以被称为抽象类.纯虚函数的实现也可以在类声明外进行定义.C++中的抽象类abstract class是指至少有一个纯虚函数的类,如果一个类全部由纯虚函数组成,不包括任何的实现,被称为纯虚类. Java中的普通函数

c++虚函数,纯虚函数,抽象类,覆盖,重载,隐藏

C++虚函数表解析(转) ——写的真不错,忍不住转了  http://blog.csdn.net/hairetz/article/details/4137000 浅谈C++多态性  http://blog.csdn.net/hackbuteer1/article/details/7475622 C++抽象类  http://www.cnblogs.com/dongsheng/p/3343939.html C++的精髓——虚函数  http://blog.chinaunix.net/uid-268

c++,纯虚函数与抽象类

1.纯虚函数的定义: (1)虚函数被“初始化”为0的函数.声明纯虚函数的一般形式是virtual 函数类型 函数名(参数表列) =0;(2)纯虚函数没有函数体:(3)最后面的“=0”并不表示函数返回值为0,它只起形式上的作用,告诉编译系统“这是纯虚函数”; (4)这是一个声明语句,最后必须加分号.(5)不能在当前类中定义 普通的虚函数 class Base { public: int i; void show1(); virtual void show2() ;//普通的虚函数 } 纯虚函数:

抽象类 纯虚函数

1 #include <iostream> 2 using namespace std; 3 /************************************************************************/ 4 /*抽象类不能定义对象,为了强调一个类为抽象类,可将该类的构造函数说明为保护的访问控制权限 5 抽象类只用作基类,其纯虚函数的实现由派生类给出 6 如果派生类定义了纯虚函数,该派生类就可以当做具体类,不定义仍然是抽象类 7 /************