/参数q代表问题的个数,m代表答错的题数Test::Test(int q, int m)floatnumericGrade;numQuestions =q;numMissed = m;pointsEach = 100.0f / numQuestions;numericGrade=100.0f- numMissed *pointsEachsetScore(numericGrade);
6 //参数q 代表问题的个数,m代表答错的题数 . Test::Test(int q, int m) { float numericGrade; numQuestions = q; numMissed = m; pointsEach = 100.0f / numQuestions; numericGrade = 100.0f - numMissed * pointsEach ; setScore(numericGrade); }
void main()int questions, missed;cout<<"How many questions?";cin >> questions;cout<<"How many questions missed?";cin >> missed;Testexam(questions, missed);cout.precision(2);cout<<"InThe scoreis"<<exam.getScoreOcout<<"In The grade is " << examgetLetterO;5-1.cpp
void main( ) { int questions, missed; cout << "How many questions ? "; cin >> questions; cout << "How many questions missed? "; cin >> missed; Test exam(questions, missed); cout.precision(2); cout << "\n The score is " << exam.getScore( ); cout << "\n The grade is " << exam.getLetter( ); } 5-1.cpp
上例中,父类中的公有成员在子类中仍是公有的,它们可以和子类中的公有成员一样被访问。但反过来是错误的父类对象或父类中的某个函数不能调用子类中的函数classBadBaseint x;public:BadBaseO x =getVal(O;} // Errorclass Derived :public BadBaseint y;public:Derived(int z)(y=z;)intgetVal()(returny;)
上例中,父类中的公有成员在子类中仍是公有的,它们可 以和子类中的公有成员一样被访问。但反过来是错误的, 父类对象或父类中的某个函数不能调用子类中的函数。 class BadBase { int x; public: BadBase( ) { x = getVal( ); } // Error }; class Derived : public BadBase { int y; public: Derived( int z ) { y = z; } int getVal( ) { return y; } };
5.2保护成员和类的访问·基类中的保护成员和私有成员比较类似,唯一的区别是:子类不可访问基类中的私有成员,但可访问基类中的保护成员。·在公有继承或保护继承的情况下,子类能访问基类的protected成员。回顾类定义中privateExample:例5-2和public的作用
9 5.2 保护成员和类的访问 • 基类中的保护成员和私有成员比较类似,唯一的区 别是:子类不可访问基类中的私有成员,但可访问 基类中的保护成员。 • 在公有继承或保护继承的情况下,子类能访问基类 的protected成员。 • Example: 例 5-2 回顾类定义中private 和public的作用
classGradeprotected:floatscore;charletter;voidcalcGrade();public:void setScore(float s)score=s;calcGrade;float getScore() return score;chargetLetter()return letter;
class Grade { protected: float score; char letter; void calcGrade( ); public: void setScore(float s) { score = s; calcGrade( ); } float getScore( ) { return score; } char getLetter( ) { return letter; } };