Gradeclass Test:publicintnumQuestions;intnumMissed;floatpointsEach;public:Test(int, int);void adjustScore();I/新增加的函数
class Test : public Grade { int numQuestions; int numMissed; float pointsEach; public: Test( int, int ); void adjustScore( ); // 新增加的函数 };
void Test::adjustScore)if ((score - int(score)) >= 0.5f)?score += 0.5 ;calcGradeO;调用哪个函数?5-2.cpp
void Test::adjustScore( ) { if ((score - int(score)) >= 0.5f ) { score += 0.5 ; calcGrade( ); } } 调用哪 个函数? 5-2.cpp
继承下的访问规则x不可访问privateprivate:X继承protected: yprivate: ypublic:Zprivate: zx不可访问private:Xprotectedprotected:yprotected: y继承public:zprotected: zx不可访问private:Xpublicprotected: yprotected: y继承public:Zpublic: z父类子类
private: x protected: y public: z private: x protected: y public: z private: x protected: y public: z x 不可访问 private: y private: z x 不可访问 protected: y protected: z x 不可访问 protected: y public: z private 继承 protected 继承 public 继承 继承下的访问规则: 父类 子类
注意如果省略了继承修饰符,那么就是私有继承:class Test : Grade·不要将继承修饰符与成员访问修饰符相混淆一成员访问修饰符:限定类外的语句能否访问类的成员。一继承修饰符:限定基类成员作为子类成员的访问权限。4
14 注意 • 如果省略了继承修饰符,那么就是私有继承: class Test : Grade • 不要将继承修饰符与成员访问修饰符相混淆: – 成员访问修饰符:限定类外的语句能否访问类 的成员。 – 继承修饰符:限定基类成员作为子类成员的访 问权限
5.3构造函数和析构函数,继承情况下构造函数的调用次序:先调用基类的构造函数,然后再调用子类的构造函数;·析构函数的调用次序:与构造函数调用次序相反即先调用子类的析构函数,然后再调用基类的析构函数。回顾类定义中构Example:例5-3.造函数和析构函数的作用、种类
15 5.3 构造函数和析构函数 • 继承情况下构造函数的调用次序:先调用基类的 构造函数,然后再调用子类的构造函数; • 析构函数的调用次序:与构造函数调用次序相反, 即先调用子类的析构函数,然后再调用基类的析 构函数。 • Example: 例 5-3. 回顾类定义中构 造函数和析构函 数的作用、种类