9.10 上机实践习题

    1.定义一个学生类,数据成员包括姓名、年龄、身高和成绩并定义一个显示结果的友元函数,最后声明一个该类的对象,调用相应的显式函数输出结果。

    【提示】上述题目主要是要求读者熟悉类和对象的相关知识,重点是掌握友元的概念、声明、定义和使用。

    【关键代码】


    01 class CStudent 02 { 03 public: 04 CStudent() 05 { 06 m_name=NULL; 07 m_age=18; 08 m_score=0; 09 m_height=150; 10 }; 11 CStudent(char*name,int age,int height,int score) 12 { 13 m_age=age; 14 m_height=height; 15 m_score=score; 16 m_name=new char[strlen(name)+1]; 17 strcpy(m_name,name); 18 }; 19 ~CStudent() 20 { 21 if(m_name!=NULL) 22 delete[]m_name; 23 m_name=NULL; 24 } 25 friend void display(CStudent&stud); 26 private: 27 intm_age; 28 intm_height; 29 float m_score; 30 char*m_name; 31 }; 32 33 void display(CStudent&stud) 34 { 35 cout<<"name age height score"<<endl; 36 cout<<stud. m_name<<""<<stud.m_age<<""<<stud.m_height<<" 37 "<<stud. m_score<<""<<endl; 38 }

    2.自定义一个四则运算类,其对象可以对两个数进行四则运算,最后输出结果。

    【提示】上述题目主要是要求读者掌握运算符重载的相关知识,重点是掌握运算符重载如何实现。

    【关键代码】


    01 class CCalc 02 { 03 private: 04 int n; 05 public: 06 CCalc(int x)//构造函数,带默认参数值 07 { 08 n=x; 09 } 10 CCalc operator+(const CCalc&);//成员函数形式重载加 11 CCalc operator-(const CCalc&);//成员函数形式重载减 12 CCalc operator*(const CCalc&);//成员函数形式重载乘 13 CCalc operator/(const CCalc&);//成员函数形式重载除 14 void disp()//成员函数,输出复数 15 { 16 cout<<"result="<<n<<endl; 17 } 18 }; 19 20 CCalc CCalc:operator+(const CCalc&CC)//加的实现 21 { 22 return CCalc(n+CC. n); 23 } 24 CCalc CCalc:operator-(const CCalc&CC)//减的实现 25 { 26 return CCalc(n-CC. n); 27 } 28 29 CCalc CCalc:operator*(const CCalc&CC)//乘的实现 30 { 31 return CCalc(n*CC. n); 32 } 33 CCalc CCalc:operator/(const CCalc&CC)//除的实现 34 { 35 if(CC. n!=0) 36 { 37 return CCalc(n/CC. n); 38 } 39 cout<<"不能进行0值除法"<<endl; 40 return CCalc(0); 41 } 42 //主函数中的调用 43 CCalc cc1(188); 44 CCalc cc2(8); 45 CCalc cc3(0); 46 cc3=cc1-cc2; 47 cc3. disp(); 48 cc3=cc1+cc2; 49 cc3. disp(); 50 cc3=cc1*cc2; 51 cc3. disp(); 52 cc3=cc1/cc2; 53 cc3. disp();