没有任何数据字段的抽象类是否需要构造函数?
此外,由于makeAMove
函数的实现在派生类中,是否有必要为此Player
类创建单独的实现文件,或者是单个.h文件好吗?< / p>
#pragma once // include guard
#include "Board.h"
class Player
{
public:
virtual void makeAMove(Board &myBoard) = 0; // pure virtual function
};
答案 0 :(得分:3)
每个类都有一个构造函数,可能不止一个。但是,您并不总是需要自己声明或定义构造函数,因为在有利的条件下,这会隐式发生。你的例子就是这种情况。
您也不需要实现文件,因为它不包含任何内容。
答案 1 :(得分:0)
是的,如果抽象类的目的是通过虚函数提供多态功能,也就是说,该类是一个接口。
基类应该有一个虚拟dtor,以确保正确销毁多态实例。
一个好的规则是:每次通过动态绑定来解析类层次结构以提供多态功能时,其基类应该具有虚拟dtor。
关于类和标题,C ++不限制您为每个文件编写一个类(如Java所做的那样)。
更正确的是,为每个文件或多个类编写一个类?取决于,我认为这是主观的。但一般来说,C和C ++使用头来提供功能,而功能通常意味着不止一个类。