1.例:引用对象的成员
#include <iostream>
using namespace std;
class Time
{public:
int hour;
int minute;
int sec;
};
int main( )
{Time t1;
cin>>t1.hour;
cin>>t1.minute;
cin>>t1.sec;
cout<<t1.hour<<″:″<<t1.minute<<″:″<<t1.sec<<endl;
return 0;
}
使用函数来进行输入和输出。
#include <iostream>
using namespace std;
class Time
{public:
int hour;
int minute;
int sec;
};
int main( )
{ void set_time(Time&); //函数声明
void show_time(Time&); //函数声明
Time t1; //定义t1为Time类对象
set_time(t1); //调用set_time函数,向t1对象中的数据成员输入数据
show_time(t1); //调用show_time函数,输出t1对象中的数据
return 0;
}
void set_time(Time& t) //定义函数set_time,形参t是引用变量
{ cin>>t.hour; //输入设定的时间
cin>>t.minute;
cin>>t.sec;
}
void show_time(Time& t) //定义函数show_time,形参t是引用变量
{ cout<<t.hour<<″:″<<t.minute<<″:″<<t.sec<<endl; //输出对象中的数据
}
数据成员的值不再由键盘输入,而在调用函数时由实参给出,并 在函数中使用默认参数。
#include <iostream>
using namespace std;
class Time
{public:
int hour;
int minute;
int sec;
};
int main( )
{ void set_time(Time&,int hour=0,int minute=0,int sec=0); //函数声明
void show_time(Time&); //函数声明
Time t1; set_time(t1,12,23,34); //通过实参传递时、分、秒的值
show_time(t1);
Time t2;
set_time(t2); //使用默认的时、分、秒的值
show_time(t2);
return 0;
}
void set_time(Time& t,int hour,int minute,int sec)
{ t.hour=hour;
t.minute=minute;
t.sec=sec;
}
void show_time(Time& t)
{ cout<<t.hour<<″:″<<t.minute<<″:″<<t.sec<<endl;
}
改用含成员函数的类来处理。
#include <iostream>
using namespace std;
class Time
{public:
void set_time( ); //公用成员函数
void show_time( ); //公用成员函数
private: //数据成员为私有
int hour;
int minute;
int sec;
}; int main( )
{ Time t1; //定义对象t1 t1.set_time( ); //调用对象t1的成员函数set_time,向t1的数据成员输入数据
t1.show_time( ); //调用对象t1的成员函数show_time,输出t1的数据成员的 值
Time t2; //定义对象
t2.set_time( ); //调用对象t2的成员函数set_time,向t2的数据成员输入数据
t2.show_time( ); //调用对象t2的成员函数show_time,输出t2的数据成员的 值
return 0;
}
void Time∷ set_time( ) //在类外定义set_time函数
{ cin>>hour;
cin>>minute;
cin>>sec;
}
void Time∷ show_time( ) //在类外定义show_time函数
{ cout<<hour<<″:″<<minute<<″:″<<sec<<endl;
}
注意
- 在主函数中调用两个成员函数时,应指明对象名 (t1,t2)。表示调用的是哪一个对象的成员函数。
- 在类外定义函数时,应指明函数的作用域(如void Time∷ set_time( ))。 在成员函数引用本对象的数据成员时,只需直接写数据 成员名,这时C++系统会把它默认为本对象的数据成 员。也可以显式地写出类名并使用域运算符。
- 应注意区分什么场合用域运算符“∷ ”,什么场合用 成员运算符“.”,不要搞混。
2.例:找出一个整型数组中的元素的最大值
#include <iostream>
using namespace std;
class Array_max //声明类
{public: //以下3行为成员函数原型声明
void set_value( ); //对数组元素设置值
void max_value( ); //找出数组中的最大元素
void show_value( ); //输出最大值
private: int array[10]; //整型数组
int max; //max用来存放最大值
};
void Array_max∷ set_value( ) //成员函数定义,向数组元素输入数值
{ int i;
for (i=0;i<10;i++)
cin>>array[i];
}
void Array_max∷ max_value( )
{int i;
max=array[0];
for (i=1;i<10;i++)
if(array[i]>max)
max=array[i];
}
void Array_max∷ show_value( )
{cout<<″max=″<<max;
}
int main( )
{ Array_max arrmax;
arrmax.set_value( );
arrmax.max_value( );
arrmax.show_value( );
return 0;
}
注意:
- 成员函数定义与调用成员函数的关系,定义成员函 数只是设计了一组操作代码,并未实际执行,只有在被调 用时才真正地执行这一组操作。
- 主函数只是调用对象的成员函数,去完成相应的操作。
- 在大多数情况下,主函数中甚至不出现控制结构(判断结 构和循环结构),而在成员函数中使用控制结构。
- 在面向对象的程序设计中,最关键的工作是类的设计。 所有的数据和对数据的操作都体现在类中。只要把类定义 好,编写程序的工作就显得很简单了。