C++做一个没有任何数据字段的抽象类需要一个构造函数
C++ Does an abstract class without any data fields need a constructor?
没有任何数据字段的抽象类需要构造函数吗?
此外,由于makeAMove
函数的实现在派生类中,是否有必要为该Player
类创建一个单独的实现文件,或者这个单独的.h文件可以吗?
#pragma once // include guard
#include "Board.h"
class Player
{
public:
virtual void makeAMove(Board &myBoard) = 0; // pure virtual function
};
每个类都有一个构造函数,可能不止一个。然而,您并不总是需要声明或自己定义构造函数,因为在有利的条件下,这是隐式发生的。你的例子就是这样。
您也不需要实现文件,因为它不包含任何内容。
是的,如果抽象类的目的是通过虚拟函数提供多态功能,也就是说,该类是一个接口。
基类应该有一个虚拟dtor,以确保正确销毁多态实例。
一个好的规则是:每次设计类层次结构以通过动态绑定提供多态功能时,它的基类都应该有一个虚拟dtor。
关于类和头,C++并没有限制您为每个文件编写一个类(就像Java那样)。
对于每个文件写一个类或多个类,什么更正确?依情况而定,我认为这是主观的。但一般来说,C和C++使用头来提供功能,而功能通常意味着不止一个类。
相关文章:
- 如何处理从一个对象传递到另一个在C++中具有公共抽象类的对象的消息
- C ++如何在原始抽象类中创建一个函数,该函数接受派生类的输入
- 从抽象类继承以创建另一个抽象类时,我应该重新声明所有虚函数吗?
- 两个抽象类,派生自同一个基类.如何访问从一个抽象类到另一个抽象类的指针
- 如何使用其中一个具体类实例化抽象类?
- 如何将抽象类的可访问性限制为另一个抽象类及其子类?
- 错误 - 变量类型 "X" 是一个抽象类 - c++
- 创建一个抽象类类型的集合,shared_ptr的抽象类向量
- 从另一个抽象类得出一个抽象类时,C 中的类重新定义错误
- 为什么gcc和clang允许我构造一个抽象类
- 如何重写调用另一个抽象类的抽象类的虚拟函数
- 用类似Java的c++实例化一个抽象类
- 在CPP中创建一个抽象类而不是基类会给我带来什么好处
- 在C++中,一个抽象类可以在没有纯虚拟函数的情况下实现吗
- c++中关于闭包的另一个抽象类问题
- VS c++编译器会错过一个抽象类的实例化吗?
- 在QML插件中注册一个C++抽象类,并从QML中引用它
- 实现一个抽象类
- 是否有可能编写一个抽象类,其中构造函数选择适当的子类在c++中实例化
- 我需要一个抽象类的.cpp文件吗