c++ - 有一个没有构造函数的类有意义吗?

标签 c++ class

我想知道如果派生类有一个构造函数,那么有一个没有构造函数的类是否有意义。如果不是,有没有办法以不同的方式做我想做的事情?

我的情况如下: 我希望用户只使用派生类,但它们具有共同的数据成员和方法。

编辑:由于类存在默认构造函数,这意味着用户始终可以直接创建 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/

相关文章:

c++ - 变量在析构函数调用中不递增?

c++ - 我的辅音/元音替换器有什么错误?

c++ - 默认构造函数是否需要调用基类默认构造函数?

c++ - 将原始数据类型解释为用户类

JavaFX : Cannot find Symbol MouseEvent

c++ - 我是否需要通过我的几何着色器将颜色传递给片段着色器?

c++ - 无法理解符号 : * and ** with pointers

java - 从非 void 函数修改对象

Java在对象创建中使用参数创建数组

ruby 克隆一个对象