纯虚拟函数可以具有参数吗?

can a pure virtual function has parameters?

本文关键字:参数 虚拟 函数      更新时间:2023-10-16

如果我有一个类" card"(base类(" cardoftype1"(派生类(和一个名为" player"的类,上面有'cardofType1'的类型'卡的指针'。我们是否有可能具有名为" PlayCard(Player YounePlayer("的纯虚拟函数?

为了获得更多理解,该代码在下面给出

class Card
{
public:
    virtual void playCard(Player enemyPlayer) = 0;
};
class CardOfType1
{
public:
    void playCard(Player enemyPlayer)
    {
         //Some Code Goes here
    }
};
class Player
{
stack<Card *> deckOfCards
//.
//.
//.
};

是的, PVF可以具有参数。

virtual void playCard(Player enemyPlayer) = 0;

在这里 = 0(没有分配(,简单地告知编译器,函数将为 pure,并且没有任何正体(在该类别中声明其声明(,但是它可以具有参数。

来自N4659 C++标准

仅在调用时才需要定义纯虚拟函数,或者 与(15.4(,合格的ID语法(8.1(。

class shape {
  point center;
  public:
  virtual void rotate(int) = 0; // pure virtual
  virtual void draw() = 0; // pure virtual
};

但是还有另一个观察结果

函数声明不能同时提供纯指标和 定义 - 结束注]

struct C {
   virtual void f() = 0 { };
};