C++ 使用私有成员的子类构造函数
我有多个子类扩展基类(媒体)。 当我调用child classses构造函数时,我无法使用私有成员mBookLateFee的值进行一些计算。。它似乎使用默认的0.0,而不是成员内容。 但是,如果我把实际值1.25放在这里,它就可以工作了 构造时,对象不能从子类成员初始化吗C++ 使用私有成员的子类构造函数,c++,inheritance,constructor,C++,Inheritance,Constructor,我有多个子类扩展基类(媒体)。 当我调用child classses构造函数时,我无法使用私有成员mBookLateFee的值进行一些计算。。它似乎使用默认的0.0,而不是成员内容。 但是,如果我把实际值1.25放在这里,它就可以工作了 构造时,对象不能从子类成员初始化吗 class Media { private : string mCallNumber; protected: string mStatus; string mTitle; string mT
class Media {
private :
string mCallNumber;
protected:
string mStatus;
string mTitle;
string mType;
int mDaysOverDue = 0;
double mDailyLateFee = 0.0;
double mTotalLateFees = 0.0;
public:
Media(string status, string title, int days=0, string callNum="", string type="", double fee=0.0) : mStatus(status),
mTitle(title), mDaysOverDue(days), mCallNumber(callNum), mType(type), mDailyLateFee(fee) {};
~Media(){};
void setCallNo(string newCallNum);
string getCallNo();
void setHowLate(int numDays);
int getDaysOverDue();
virtual void print();
virtual double getFees() = 0;
};
class Book : public Media {
private:
double mBookLateFee = 1.25;
protected:
string mAuthor;
int mNumPages;
public:
Book(string status, string title, int days, string callNum, string author, int pages=0) :
Media(status, title, days, callNum, "Book", mBookLateFee), mAuthor(author), mNumPages(pages){
mTotalLateFees = mDaysOverDue * mDailyLateFee;
};
double getFees() { return mTotalLateFees;}
void print();
};
父类超类在子类之前构造 当您的子类调用父类的构造函数超类时,子类还没有被构造。它的
mBooklateFee
尚未构建
从某种意义上说,它还不存在。因此,您不能使用它来调用父类的构造函数。我想就是它了,谢谢您的确认!