一个纯虚函数可以有参数吗?

时间:2018-02-26 13:47:00

标签: c++ parameters polymorphism virtual-functions pure-virtual

如果我有一个类“Card”(基类)“CardOfType1”(派生类)和一个名为“Player”的类,其类型为“Card”的指针指向'CardOfType1'。我们有可能有一个名为'playCard(Player enemyPlayer)'的纯虚函数吗?

为了更加理解,代码如下:

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
//.
//.
//.

};

1 个答案:

答案 0 :(得分:1)

是的,PVF可以有参数。

virtual void playCard(Player enemyPlayer) = 0;

这里= 0(未分配),我们只是通知编译器函数将是pure并且没有任何正文(在该类中声明它的位置),但是它可以有参数。

来自n4659 C++标准

  

只有在使用或者调用时才需要定义纯虚函数   with(15.4),qualified-id语法(8.1)。

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

但还有另一个观察

  

函数声明不能​​同时提供pure-specifier和a   定义 - 结束注释]

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