如果我有一个类“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 //. //. //. };
是的,a PVF 可以有参数。
PVF
virtual void playCard(Player enemyPlayer) = 0;
在这里 = 0 (不是赋值),我们只是通知编译器函数将 pure 并且没有任何主体(在该类中声明主体的位置),但它可以有参数。
= 0
pure
从n4659 C++ 标准
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 { }; };