例8.1 最簡(jiǎn)單的例子。
#include <iostream>
usingnamespacestd;
classTime //定義Time類
{public: //數(shù)據(jù)成員為公用的
inthour;
intminute;
intsec;
};
intmain( )
{ Time t1; //定義t1為T(mén)ime類對(duì)象
cin>>t1.hour; //輸入設(shè)定的時(shí)間
cin>>t1.minute;
cin>>t1.sec;
cout<<t1.hour<<":"<<t1.minute<<":"<<t1.sec<<endl; //輸出時(shí)間
return0;
}
例8.2 引用多個(gè)對(duì)象的成員。
(1)程序(a)
#include <iostream>
usingnamespacestd;
classTime
{public:
inthour;
intminute;
intsec;
};
intmain( )
{Time t1; //定義對(duì)象t1
cin>>t1.hour; //向t1的數(shù)據(jù)成員輸入數(shù)據(jù)
cin>>t1.minute;
cin>>t1.sec;
cout<<t1.hour<<":"<<t1.minute<<":"<<t1.sec<<endl; //輸出t1中數(shù)據(jù)成員的值
Time t2; //定義對(duì)象t2
cin>>t2.hour; //向t2的數(shù)據(jù)成員輸入數(shù)據(jù)
cin>>t2.minute;
cin>>t2.sec;
cout<<t2.hour<<":"<<t2.minute<<":"<<t2.sec<<endl; //輸出t2中數(shù)據(jù)成員的值
return0;
}
(2)程序(b)
#include <iostream>
usingnamespacestd;
classTime
{public:
inthour;
intminute;
intsec;
};
intmain( )
{
voidset_time(Time&); //函數(shù)聲明
voidshow_time(Time&); //函數(shù)聲明
Time t1; //定義t1為T(mén)ime類對(duì)象
set_time(t1); //調(diào)用set_time函數(shù),向t1對(duì)象中的數(shù)據(jù)成員輸入數(shù)據(jù)
show_time(t1); //調(diào)用show_time函數(shù),輸出t1對(duì)象中的數(shù)據(jù)
Time t2; //定義t2為T(mén)ime類對(duì)象
set_time(t2); //調(diào)用set_time函數(shù),向t2對(duì)象中的數(shù)據(jù)成員輸入數(shù)據(jù)
show_time(t2); //調(diào)用show_time函數(shù),輸出t2對(duì)象中的數(shù)據(jù)
return0;
}
voidset_time(Time& t) //定義函數(shù)set_time,形參t是引用變量
{
cin>>t.hour; //輸入設(shè)定的時(shí)間
cin>>t.minute;
cin>>t.sec;
}
voidshow_time(Time& t) //定義函數(shù)show_time,形參t是引用變量
{
cout<<t.hour<<":"<<t.minute<<":"<<t.sec<<endl; //輸出對(duì)象中的數(shù)據(jù)
}
(3)程序(c)
可以對(duì)上面的程序作一些修改,數(shù)據(jù)成員的值不再由鍵盤(pán)輸入,而在調(diào)用函數(shù)時(shí)由實(shí)參給出,并在函數(shù)中使用默認(rèn)參數(shù)。將程序(b)第8行以下的部分修改為
intmain( )
{
voidset_time(Time&,inthour=0,intminute=0,intsec=0); //函數(shù)聲明
voidshow_time(Time&); //函數(shù)聲明
Time t1;
set_time(t1,12,23,34); //通過(guò)實(shí)參傳遞時(shí)、分、秒的值
show_time(t1);
Time t2;
set_time(t2); //使用默認(rèn)的時(shí)、分、秒的值
show_time(t2);
return0;
}
voidset_time(Time& t,inthour,intminute,intsec)
{
t.hour=hour;
t.minute=minute;
t.sec=sec;
}
voidshow_time(Time& t)
{
cout<<t.hour<<":"<<t.minute<<":"<<t.sec<<endl;
}
例8.3 將例8.2的程序改用含成員函數(shù)的類來(lái)處理。
#include <iostream>
usingnamespacestd;
classTime
{public:
voidset_time( ); //公用成員函數(shù)
voidshow_time( ); //公用成員函數(shù)
private: //數(shù)據(jù)成員為私有
inthour;
intminute;
intsec;
};
intmain( )
{
Time t1; //定義對(duì)象t1
t1.set_time( ); //調(diào)用對(duì)象t1的成員函數(shù)set_time,向t1的數(shù)據(jù)成員輸入數(shù)據(jù)
t1.show_time( ); //調(diào)用對(duì)象t1的成員函數(shù)show_time,輸出t1的數(shù)據(jù)成員的值
Time t2; //定義對(duì)象t2
t2.set_time( ); //調(diào)用對(duì)象t2的成員函數(shù)set_time,向t2的數(shù)據(jù)成員輸入數(shù)據(jù)
t2.show_time( ); //調(diào)用對(duì)象t2的成員函數(shù)show_time,輸出t2的數(shù)據(jù)成員的值
return0;
}
voidTime∷set_time( ) //在類外定義set_time函數(shù)
{
cin>>hour;
cin>>minute;
cin>>sec;
}
voidTime∷show_time( ) //在類外定義show_time函數(shù)
{
cout<<hour<<":"<<minute<<":"<<sec<<endl;
}
例8.4 找出一個(gè)整型數(shù)組中的元素的最大值。
這個(gè)問(wèn)題可以不用類的方法來(lái)解決,現(xiàn)在用類來(lái)處理,讀者可以比較不同方法的特點(diǎn)。
#include <iostream>
usingnamespacestd;
classArray_max //聲明類
{public: //以下3行為成員函數(shù)原型聲明
voidset_value( ); //對(duì)數(shù)組元素設(shè)置值
voidmax_value( ); //找出數(shù)組中的最大元素
voidshow_value( ); //輸出最大值
private:
intarray[10]; //整型數(shù)組
intmax; //max用來(lái)存放最大值
};
voidArray_max∷set_value( ) //成員函數(shù)定義,向數(shù)組元素輸入數(shù)值
{ inti;
for(i=0;i<10;i++)
cin>>array[i];
}
voidArray_max∷max_value( ) //成員函數(shù)定義,找數(shù)組元素中的最大值
{inti;
max=array[0];
for(i=1;i<10;i++)
if(array[i]>max) max=array[i];
}
voidArray_max∷show_value( ) //成員函數(shù)定義,輸出最大值
{cout<<"max="<<max;}
intmain( )
{Array_max arrmax; //定義對(duì)象arrmax
arrmax.set_value( ); //調(diào)用arrmax的set_value函數(shù),向數(shù)組元素輸入數(shù)值
arrmax.max_value( ); //調(diào)用arrmax的max_value函數(shù),找出數(shù)組元素中的最大值
arrmax.show_value( ); //調(diào)用arrmax的show_value函數(shù),輸出數(shù)組元素中的最大值
return0;
}
