我想知道如果派生类有一个构造函数,那么有一个没有构造函数的类是否有意义。如果不是,有没有办法以不同的方式做我想做的事情?
我的情况如下: 我希望用户只使用派生类,但它们具有共同的数据成员和方法。
编辑:由于类存在默认构造函数,这意味着用户始终可以直接创建 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;
};
最佳答案
I want the users to only use the derived classes, but those have data members and methods in common
拥有您的默认(或任何其他)c'tor,但声明它具有 protected
访问权限。现在只有派生类可以调用它。有效地使其仅在继承时可用。
class instrument{
public:
double get_price();
std::string get_udl();
protected:
instrument() = default;
private:
double m_price;
std::string m_udl;
};
这也避免了与抽象类相关的开销。如果您不需要多态性,则不应仅使用它来使类仅可用作基类。
关于c++ - 有一个没有构造函数的类有意义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48071569/