可以私有地调用其成员的父构造函数吗? 我知道有保护这个有效,但我更喜欢使用私有,有什么方法可以解决这个问题吗?
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;
};
答案 0 :(得分:0)
如果父的构造函数是public
或protected
,那么调用它是没有问题的,即使它正在初始化的成员是私有的。虽然不清楚你的例子如何初始化父母,所以我只想写一些更简单的东西来使事情更清楚:
class Parent {
int mem_;
public:
Parent(int mem) : mem_(mem) { }
};
class Child : public Parent {
public:
Child(int mem) : Parent(mem) { }
};
上面的例子可行,没问题。问题是,如果要使用mem_
类修改Child
成员,则只能使用{{1} public
和protected
访问器方法来执行此操作} class提供。