当前位置:编程学习 > C/C++ >>

在虚函数的声明的参数列表之后加上“=0”就将函数变成了纯虚函数

  虚函数:在虚函数的声明的参数列表之后加上“=0”就将函数变成了纯虚函数,如:


[cpp] 
class  Base 

    virtual void function()=0; 

class  Base
{
    virtual void function()=0;
}我们不需要为纯虚函数Base::function()提供任何定义,那些声明了纯虚函数的类就是抽象类。任何试图创建一个抽象类对象的操作都会导致编译器错误。

如果一个类派生子Base并且重写了Base::function()函数,它就成为了具体的类了。

[cpp] 
class Derived :public Basae 

  void function(); 

class Derived :public Basae
{
  void function();
}
我们通常将抽象类用作接口声明,这时我们不需要为该接口声明一个完整的实现,该接口描述了所有派生自该类的对象都应该支持的操作;派生类必须实现这些抽象操作。

[cpp] 
class  Base 

    public: 
        virtual void print()=0; 
}; 
class Derived :public Base 

    public: 
        virtual void print() 
        { 
            cout<<"Derived::Derived()\n"; 
        } 
        ~Derived() 
        { 
            print(); 
        } 
}; 
int main() 

    Derived D; 
    Base* ptr=&D; 
    D.print(); 

class  Base
{
    public:
        virtual void print()=0;
};
class Derived :public Base
{
    public:
        virtual void print()
        {
            cout<<"Derived::Derived()\n";
        }
        ~Derived()
        {
            print();
        }
};
int main()
{
    Derived D;
    Base* ptr=&D;
    D.print();
}运行结果:
Derived::Derived()

Derived::Derived()


第一个Derived::Derived()是通过D直接调用print()时所产生的输出,第二个是在程序结束时调用~Derived()时产生的输出。

虽然我们不可以直接创建抽象类的对象了,但是仍然可以使用指向Base的指针和引用。

比如: Base* ptr= &D;

 

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,