代码之家  ›  专栏  ›  技术社区  ›  deostroll

C++:解释这个函数声明

  •  2
  • deostroll  · 技术社区  · 14 年前
    class PageNavigator {
     public:
      // Opens a URL with the given disposition.  The transition specifies how this
      // navigation should be recorded in the history system (for example, typed).
      virtual void OpenURL(const GURL& url, const GURL& referrer,
                           WindowOpenDisposition disposition,
                           PageTransition::Type transition) = 0;
    };
    

    我不明白那是什么 =0; 部分……我们想沟通什么?

    3 回复  |  直到 14 年前
        1
  •  10
  •   Tomek Szpakowicz    14 年前

    “=0”表示 纯虚拟方法 . 它必须在继承类中被重写。

    如果类具有纯虚方法,则将其视为 摘要 . Instances (objects) of abstract classes cannot be created. 它们只能用作基类。

    奇怪的细节:“=0”并不意味着方法没有定义(没有主体)。您仍然可以提供方法体,例如:

    class A
    {
     public:
      virtual void f() = 0;
      virtual ~A() {}
    };
    
    void A::f()
    {
      std::cout << "This is A::f.\n";
    }
    
    class B : public A
    {
     public:
      void f();
    }
    
    void B::f()
    {
      A::f();
      std::cout << "And this is B::f.\n";
    }
    
        2
  •  3
  •   Rup    14 年前

    这是一个 pure virtual function -基类中没有定义,因此它是抽象类,继承自PageNavigator的任何可实例化类都必须定义此函数。

        3
  •  0
  •   mahju    14 年前

    =0表示该函数是纯虚函数或抽象函数,实际上它有两种含义:

    a)具有抽象函数的类是抽象类。不能实例化抽象类。

    b)您必须定义一个子类,用一个实现覆盖它。