我的项目是创建一个潜水日志。有DiveInfo基类和Equipment派生类。该设备可能会改变从潜水到潜水,所以显然它需要得到的变量为特定的潜水,根据给定的数据由用户。
这是设备。h:
#pragma once
#include "DiveInfo.h"
#include <string>
class Equipment : public DiveInfo
//manage and capture information about the diving equip
{
private:
std::string equipmentCondition;
std::string equipmentType;
std::string maskType;
double tankSize;
public:
Equipment(const std::string& diveSiteName, int depth, int duration, double waterTemperature, double visibility, const std::string& notes,
const std::string& equipmentCondition, const std::string& equipmentType, const std::string& maskType, double tankSize);
std::string getEquipmentType() const;
std::string getEquipmentCondition() const;
double getTankSizeI() const;
double getSac() const;
};
字符串
我已经在DiveInfo中为这些变量创建了一个构造函数(来自diveSiteNames的til注解)。问题是,是否必须在Equipment.h构造函数的初始化器列表中包含DiveInfo的变量?这可能也是一个大胆的问题,但是这不能用一些虚拟函数或一些模板来完成吗?还是会把事情完全复杂化?
1条答案
按热度按时间k75qkfdt1#
每个类都应该初始化自己,并且只初始化自己。它应该让父类完成自己的初始化。
要做到这一点,首先在构造函数初始化列表中“调用”基类构造函数。
举个简单的例子:
字符串
derived
构造函数初始化器列表首先调用base
类构造函数进行初始化,然后是derived
成员初始化。