使用父类中的私有成员调用父构造函数

时间:2015-02-22 23:32:48

标签: c++ oop

可以私有地调用其成员的父构造函数吗? 我知道有保护这个有效,但我更喜欢使用私有,有什么方法可以解决这个问题吗?

class Product {

    std::string id;
    std::string description;
    double rateIVA;

public:
    Product(std::string id, std::string description, double rateIVA);
    ~Product();

    // Abstract Methods / Pure Virtual Methods
    virtual double getIVAValue() = 0;
    virtual double getSaleValue() = 0;

    // Virtual Method
    virtual void print() const;

    // Setters & Getters
    void setId(std::string id);
    std::string getId() const;
    void setDescription(std::string description);
    std::string getDescription() const;
    void setRateIVA(double rateIVA);


    double getRateIVA() const;
};

class FixedPriceProduct : protected Product {

    double price;

    public:
        FixedPriceProduct();
            FixedPriceProduct(double price); // Implement here
        ~FixedPriceProduct();

        double getIVAValue();
        double getSaleValue();

        virtual void print() const;
};

1 个答案:

答案 0 :(得分:0)

如果父的构造函数是publicprotected,那么调用它是没有问题的,即使它正在初始化的成员是私有的。虽然不清楚你的例子如何初始化父母,所以我只想写一些更简单的东西来使事情更清楚:

class Parent {
    int mem_;

public:
    Parent(int mem) : mem_(mem) { }
};

class Child : public Parent {
public:
    Child(int mem) : Parent(mem) { }
};

上面的例子可行,没问题。问题是,如果要使用mem_类修改Child成员,则只能使用{{1} publicprotected访问器方法来执行此操作} class提供。