1.例:引用对象的成员


      1. #include <iostream>
      2. using namespace std;
      3. class Time
      4. {public:
      5. int hour;
      6. int minute;
      7. int sec;
      8. };
      9. int main( )
      10. {Time t1;
      11. cin>>t1.hour;
      12. cin>>t1.minute;
      13. cin>>t1.sec;
      14. cout<<t1.hour<<″:″<<t1.minute<<″:″<<t1.sec<<endl;
      15. return 0;
      16. }
    • 使用函数来进行输入和输出。

      1. #include <iostream>
      2. using namespace std;
      3. class Time
      4. {public:
      5. int hour;
      6. int minute;
      7. int sec;
      8. };
      9. int main( )
      10. { void set_time(Time&); //函数声明
      11. void show_time(Time&); //函数声明
      12. Time t1; //定义t1为Time类对象
      13. set_time(t1); //调用set_time函数,向t1对象中的数据成员输入数据
      14. show_time(t1); //调用show_time函数,输出t1对象中的数据
      15. return 0;
      16. }
      17. void set_time(Time& t) //定义函数set_time,形参t是引用变量
      18. { cin>>t.hour; //输入设定的时间
      19. cin>>t.minute;
      20. cin>>t.sec;
      21. }
      22. void show_time(Time& t) //定义函数show_time,形参t是引用变量
      23. { cout<<t.hour<<″:″<<t.minute<<″:″<<t.sec<<endl; //输出对象中的数据
      24. }
    • 数据成员的值不再由键盘输入,而在调用函数时由实参给出,并 在函数中使用默认参数。

      1. #include <iostream>
      2. using namespace std;
      3. class Time
      4. {public:
      5. int hour;
      6. int minute;
      7. int sec;
      8. };
      9. int main( )
      10. { void set_time(Time&,int hour=0,int minute=0,int sec=0); //函数声明
      11. void show_time(Time&); //函数声明
      12. Time t1; set_time(t1,12,23,34); //通过实参传递时、分、秒的值
      13. show_time(t1);
      14. Time t2;
      15. set_time(t2); //使用默认的时、分、秒的值
      16. show_time(t2);
      17. return 0;
      18. }
      19. void set_time(Time& t,int hour,int minute,int sec)
      20. { t.hour=hour;
      21. t.minute=minute;
      22. t.sec=sec;
      23. }
      24. void show_time(Time& t)
      25. { cout<<t.hour<<″:″<<t.minute<<″:″<<t.sec<<endl;
      26. }
    • 改用含成员函数的类来处理。

      1. #include <iostream>
      2. using namespace std;
      3. class Time
      4. {public:
      5. void set_time( ); //公用成员函数
      6. void show_time( ); //公用成员函数
      7. private: //数据成员为私有
      8. int hour;
      9. int minute;
      10. int sec;
      11. }; int main( )
      12. { Time t1; //定义对象t1 t1.set_time( ); //调用对象t1的成员函数set_time,向t1的数据成员输入数据
      13. t1.show_time( ); //调用对象t1的成员函数show_time,输出t1的数据成员的 值
      14. Time t2; //定义对象
      15. t2.set_time( ); //调用对象t2的成员函数set_time,向t2的数据成员输入数据
      16. t2.show_time( ); //调用对象t2的成员函数show_time,输出t2的数据成员的 值
      17. return 0;
      18. }
      19. void Time set_time( ) //在类外定义set_time函数
      20. { cin>>hour;
      21. cin>>minute;
      22. cin>>sec;
      23. }
      24. void Time show_time( ) //在类外定义show_time函数
      25. { cout<<hour<<″:″<<minute<<″:″<<sec<<endl;
      26. }
    • 注意

      • 在主函数中调用两个成员函数时,应指明对象名 (t1,t2)。表示调用的是哪一个对象的成员函数。
      • 在类外定义函数时,应指明函数的作用域(如void Time∷ set_time( ))。 在成员函数引用本对象的数据成员时,只需直接写数据 成员名,这时C++系统会把它默认为本对象的数据成 员。也可以显式地写出类名并使用域运算符。
      • 应注意区分什么场合用域运算符“∷ ”,什么场合用 成员运算符“.”,不要搞混。

    2.例:找出一个整型数组中的元素的最大值

      1. #include <iostream>
      2. using namespace std;
      3. class Array_max //声明类
      4. {public: //以下3行为成员函数原型声明
      5. void set_value( ); //对数组元素设置值
      6. void max_value( ); //找出数组中的最大元素
      7. void show_value( ); //输出最大值
      8. private: int array[10]; //整型数组
      9. int max; //max用来存放最大值
      10. };
      11. void Array_max set_value( ) //成员函数定义,向数组元素输入数值
      12. { int i;
      13. for (i=0;i<10;i++)
      14. cin>>array[i];
      15. }
      16. void Array_max max_value( )
      17. {int i;
      18. max=array[0];
      19. for (i=1;i<10;i++)
      20. if(array[i]>max)
      21. max=array[i];
      22. }
      23. void Array_max show_value( )
      24. {cout<<″max=″<<max;
      25. }
      26. int main( )
      27. { Array_max arrmax;
      28. arrmax.set_value( );
      29. arrmax.max_value( );
      30. arrmax.show_value( );
      31. return 0;
      32. }
    • 注意:

      • 成员函数定义与调用成员函数的关系,定义成员函 数只是设计了一组操作代码,并未实际执行,只有在被调 用时才真正地执行这一组操作。
      • 主函数只是调用对象的成员函数,去完成相应的操作。
      • 在大多数情况下,主函数中甚至不出现控制结构(判断结 构和循环结构),而在成员函数中使用控制结构。
      • 在面向对象的程序设计中,最关键的工作是类的设计。 所有的数据和对数据的操作都体现在类中。只要把类定义 好,编写程序的工作就显得很简单了。