C ++没有任何数据字段的抽象类是否需要构造函数?

时间:2013-12-15 23:14:50

标签: c++

没有任何数据字段的抽象类是否需要构造函数?

此外,由于makeAMove函数的实现在派生类中,是否有必要为此Player类创建单独的实现文件,或者是单个.h文件好吗?< / p>

#pragma once // include guard
#include "Board.h"

class Player
{
    public:
        virtual void makeAMove(Board &myBoard) = 0; // pure virtual function
};

2 个答案:

答案 0 :(得分:3)

每个类都有一个构造函数,可能不止一个。但是,您并不总是需要自己声明定义构造函数,因为在有利的条件下,这会隐式发生。你的例子就是这种情况。

您也不需要实现文件,因为它不包含任何内容。

答案 1 :(得分:0)

是的,如果抽象类的目的是通过虚函数提供多态功能,也就是说,该类是一个接口。

基类应该有一个虚拟dtor,以确保正确销毁多态实例。

一个好的规则是:每次通过动态绑定来解析类层次结构以提供多态功能时,其基类应该具有虚拟dtor。

关于类和标题,C ++不限制您为每个文件编写一个类(如Java所做的那样)。

更正确的是,为每个文件或多个类编写一个类?取决于,我认为这是主观的。但一般来说,C和C ++使用头来提供功能,而功能通常意味着不止一个类。