zoukankan      html  css  js  c++  java
  • 纯虚函数不能生成对象

    虚函数是 一种特殊的虚函数,它的一般格式如下:   class <类名>   {   virtual <类型><函数名>(<参数表>)=0;   …   };   在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去 做。这就是纯虚函数的作用。   纯虚函数可以让类先具有一个操作名称,而没有操作内容,让派生类在继承时再去具体地给出定义。 凡是含有纯虚函数的类叫做抽象类。这种类不能声明对象,只是作为基类为派生类服务。除非在派生类中完全实现基类中所有的的纯虚函数,否则,派生类也变成了 抽象类,不能实例化对象

     程序举例:   
    基类:   
    class A  
     {   
    public:   
    A();   
    virtual ~A();   
    void f1();   
    virtual void f2();   
    virtual void f3()=0;  
     };   
    子类:   
    class B : public A   
    {   
    public:   
    B();   
    virtual ~B();   
    void f1();   
    virtual void f2();   
    virtual void f3();   
    };   
    主函数:   
    int main(int argc, char* argv[])   
    {   
    A *m_j=new B();   
    m_j->f1();   
    m_j->f2();   
    m_j->f3();   
    delete m_j;   
    return 0;   
    }   
    f1()是一个隐藏,关于函数的隐藏,可以参考其它词条.   
    调用m_j->f1();会去调用A类中的f1(),它是在我们写好代码的时候就会定好的.   
    也就是根据它是由A类定义的,这样就调用这个类的函数.   
    f2()是重写(覆盖).   
    调用m_j->f2();会调用m_j中到底保存的对象中,对应的这个函数.这是由于new的B   
    对象.(调用派生类的f2())   
    f3()与f2()一样,只是在基类中不需要写函数实现.

  • 相关阅读:
    在Xcode 查看预处理及预编译阶段“宏”Marcos
    复用的基础
    抖音品质建设
    Mach-O 文件格式
    isaclass object_getClass
    组件化接口依赖一致性问题
    objectClasses and metaclasses
    __attribute__详解及应用
    深入静态库 & 动态库--[iOS] 组件二进制化 & 库的各种小知识
    iOS应用的启动流程和优化详解
  • 原文地址:https://www.cnblogs.com/charlexu/p/2854264.html
Copyright © 2011-2022 走看看