我想知道如果派生类有一个没有构造函数的类是否有意义.如果没有,有没有办法以不同的方式做我想要的事情?
我的情况如下:我希望用户只使用派生类,但这些类具有共同的数据成员和方法.
编辑:由于类存在默认构造函数,这意味着用户可以直接创建Instrument的实例,那么我该怎么做我想要的呢?
class instrument{
public:
double get_price();
std::string get_udl();
private:
double m_price;
std::string m_udl;
};
class stock : public instrument{
public:
double get_dividend();
private:
double m_dividend;
};
class option : public instrument{
public:
double get_strike();
private:
double m_strike;
};
Run Code Online (Sandbox Code Playgroud)
我希望用户只使用派生类,但这些类具有共同的数据成员和方法
拥有您的默认(或任何其他)c'tor,但声明它具有protected访问权限.现在只有派生类可以调用它.有效地使其仅在继承时可用.
class instrument{
public:
double get_price();
std::string get_udl();
protected:
instrument() = default;
private:
double m_price;
std::string m_udl;
};
Run Code Online (Sandbox Code Playgroud)
这也避免了使类抽象相关的开销.如果您不需要多态,则不应仅仅使用它来使类仅可用作基类.