实验四 类的定义及使用
版权声明:【本文为博主原创,未经博主允许不得转载】
任务描述:
1、设计一个计数器类(Counter),其数据成员包括计数器的值;成员函数包括:(1)初始化(要求使用带默认参数的构造函数实现);(2)计数器加1;(3)计数器减1;(4)显示计数器的值。2、设计一个时间类(Time) ,其数据成员包括时,分,秒;成员函数包括:(1)加一秒;(2)按24小时制显示时间;(3)按12小时制显示时间。要求分别使用有参数,无参数的构造函数实现数据成员的初始化。
1、设计一个计数器类(Counter):
1、编写主函数main测试上述类,代码如下:
int main()
{
Counter c(5);
c.add();
c.show();
c.sub();
c.show();
return 0;
}
本程序参考老师程序:/************************************************ File:Experiment in c++ Time:2018-4-14 Author:han ************************************************/ #include <iostream> using namespace std; /************************************************************************/ /* 计数器类 */ /************************************************************************/ class Counter { public: Counter (int=0); //构造函数 void add(); void sub(); void show(); private: int out; };
Counter::Counter(int n):out(n){};//初始化列表。原先没有看懂这句的意思后来百度查询了:与::的区别。 /************************************************************************/ /* 累加函数 */ /************************************************************************/ void Counter::add() { out++; } /************************************************************************/ /* 累减函数 */ /************************************************************************/ void Counter::sub() { out--; } /************************************************************************/ /* 显示函数 */ /************************************************************************/ void Counter::show() { cout<<"The num of counter is "<<out<<endl; } /************************************************************************/ /* 主函数 */ /************************************************************************/ int main() { Counter c(5); c.add(); c.show(); c.sub(); c.show(); return 0; }
2、设计一个时间类(Time),并用不同的构造函数实现成员初始化:
class Time
{
public:
Time (int h=0, int m=0, int s=0);
void add();
void normalshow();
void universialhour();
private:
/*int out;*/
int hour;
int minute;
int second;
};
/************************************************************************/
/* c初始化列表 */
/************************************************************************/
Time::Time(int h, int m, int s): hour(h),minute(m),second(s){};
时间类具体程序:
/************************************************ File:Experiment in c++ Time:2018-4-14 Author:han ************************************************/ #include <iostream> using namespace std; /************************************************************************/ /* 计数器类 */ /************************************************************************/ class Time { public: Time (int h=0, int m=0, int s=0); void add(); void normalshow(); void universialhour(); private: /*int out;*/ int hour; int minute; int second; }; /************************************************************************/ /* c初始化列表 */ /************************************************************************/ Time::Time(int h, int m, int s): hour(h),minute(m),second(s){}; /************************************************************************/ /* 累加函数 */ /************************************************************************/ void Time::add() { second++; if (second==60) { second=0; } /* hour=hour-12;*/ } /************************************************************************/ /* 常规的时间显示函数 */ /************************************************************************/ void Time::normalshow() { hour=hour-12; cout<<hour<<":"<<minute<<":"<<second<<" PM "; } /************************************************************************/ /* 通用时间显示函数 */ /************************************************************************/ void Time::universialhour() { hour=hour+12; cout<<hour<<":"<<minute<<":"<<second<<endl; } /************************************************************************/ /* 主函数 */ /************************************************************************/ int main() { Time t(23,59,0); for(int i=0;i<60;i++) { t.add(); t.normalshow(); t.universialhour(); } return 0; }
以下是百度来的资料感觉麻烦先复制来以便以后回顾:
1.冒号(:)用法 (1)表示机构内位域的定义(即该变量占几个bit空间) typedef struct _XXX{ unsigned char a:4; unsigned char c; } ; XXX (2)构造函数后面的冒号起分割作用,是类给成员变量赋值的方法,初始化列表,更适用于成员变量的常量const型。 struct _XXX{ _XXX() : y(0xc0) {} }; (3) public:和private:后面的冒号,表示后面定义的所有成员都是公有或私有的,直到下一个"public:”或"private:”出现为止。"private:"为默认处理。 (4)类名冒号后面的是用来定义类的继承。 class 派生类名 : 继承方式 基类名 { 派生类的成员 }; 继承方式:public、private和protected,默认处理是public。 2.双冒号(::)用法 (1)表示“域操作符” 例:声明了一个类A,类A里声明了一个成员函数void f(),但没有在类的声明里给出f的定义,那么在类外定义f时, 就要写成void A::f(),表示这个f()函数是类A的成员函数。 (2)直接用在全局函数前,表示是全局函数 例:在VC里,你可以在调用API 函数里,在API函数名前加:: (3)表示引用成员函数及变量,作用域成员运算符