}; ptr->area(); int main(void) ptr->volume(); { return 0; Containner *ptr; } int r,h;
运行结果: cout<<\
Sphere obj(r); Now Input Radius of Sphere :6 ptr=&obj; Shpere's Aera=452.16 ptr->area(); Shpere's Volume=678.24 ptr->volume(); Now Input Radius and Heights of Sphere :7 8 cout<<\Input Radius and Heights of Cylinder's Area=659.4 Sphere :\Cylinder's Volume=351.68 Cylinder obj2(r,h); Press any key to continue ptr=&obj2;
6.设计一个时钟类TIME,内含数据成员hour,minute,second表示时间,成员函数set( )设置时间数据,show( )显示时间数据。重载运算符 ++和-- (具有返回值),每执行一次++,second自增1,执行一次--,second自减1。second和minute的值在0~59区间循环(满59后再自增则归0,minute加1;second为0时再自减则为59,minute减1)。hour的值在0~23区间循环。
}
6程序代码: if(minute==-1){ #include
31
TIME operator++(int) { cout<<\ second++; choose(); return *this; } TIME operator--() { cout<<\ --second; choose(); return *this; } TIME operator--(int) { cout<<\ second--; choose(); return *this; } void print() { cout<<\ cout< int main(void) { TIME t; t.set(); string a; cout<<\++(--)time or time++(--) to change the time.\\nInput 0 to quit.\ cout<<\ cout<<\ } while(a!=\{ cout<<\ cin>>a; if(a==\ { t++; t.print();} else if(a==\ { ++t; t.print();} else if(a==\ { --t; t.print();} else if(a==\ { t--; t.print();} else if(a==\ else if(a==\ else cout<<\} return 0; 运行结果: Set Time Input Hour Minute Second :23 59 59 Input ++(--)time or time++(--) to change the time. Input 0 to quit. or +/- to run ++/--second Input reset to set new time. Now Input:++ Bad inputs, Retry:Now Input:++time Run ++second Now time:00:00:00 Now Input:++time Run ++second Now time:00:00:01 Now Input:time-- Run second-- Now time:00:00:00 Now Input:--time Run --second Now time:23:59:59 Now Input:0 Press any key to continue 32 附一:简介类和对象(个人理解) 类是抽象的 对象是具体的 知道这些可能还不理解 那就再具体一点吧 假设我们身边有A、B、C三个同学 A同学 在101宿舍6号床上铺 有1张床 2个杯子 1条毛巾 4件衣服 B同学 在102宿舍5号床下铺 有1张床 1个杯子 2条毛巾 3件衣服 C同学 在202宿舍1号床下铺 有1张床 3个杯子 2条毛巾 2件衣服 有上可以总结出 住所(字符串型) 床(整型) 杯子(整型) 毛巾(整型) 衣服(整型) 那么同学就是 一个类 其中包含了数据成员 住所、床、杯子、毛巾、衣服 A、B、C三名同学就是 同学类的对象 其实我们可以把类看做是一种数据类型 例如:Student类 中声明出了 A对象 int型 中声明出了a变量 Student A; int a; 类是由各种成员构成的 其中包括数据成员 和 成员函数 数据成员用来存放类内的所有数据 成员函数是用来体现类的功能的 一个没有成员函数的类是空洞的 因为它不具备除了存取之外的任何功能(包括计算 输入输出 等等) 注意类中成员和访问属性(私有、公有、保护)是两个概念 即:不一定数据成员必须就是私有的,成员函数是公有的 成员函数可以是私有的 数据成员也可以是公有的 这只是为了涉及数据保护而进行的编程习惯的培养 因为 “主体?函数?数据” 比 “主体?数据” 更具有安全性 (因为函数部分可设置保密功能) 具体一点 Function1(…)子函数1 int main(void)主函数 各种功能 内存区(形参) 各种功能 访 复制 问内存区(实参) Function2(…)子函数2 各种功能 复制 内存区(形参) 这是不涉及对象的 通过主函数和子函数实现功能 的机制演示 主函数与子函数的内存完全独立 互不影响 但是子函数无法直接调用实参(指针除外) 33 int main(void)主函数 各种功能 对象B 公有成员函数(功能区) 公有数据成员(内存区) 访 问 访 属 问 性属 ? 性 ? 私有/保护数据成员(内 存区) 私有/保护成员函数 与子函数不同 对象的内存区就在主函数中 是否能够调用由访问属性决定 对象A 公有成员函数 公有数据成员 附二: 设置函数与读取函数的作用机制(以实验一 第二题为例) 对象 首先要明确:赋值、读取、调用都是对成员的访问 由于访问属性将数据成员设置为私有所以 主函数 设置值 数据成员 主函数直接向对象中的私有数据成员赋值 成员函数(设置值) 是不允许的 值传递 由于设置函数是公有的 可以由主函数直接调用 那么就可以将要输入的值作为形参传如设置函数 再通过这个形参来最终修改成员函数的值 同样的,私有成员不能读取 那么也只能通过设立读取函数来返回数据成员的内容 对象 数据成员 主函数 成员函数(读取值) 34 私有/保护数据成员 私有/保护成员函数 附三 部分编程习惯 1.编程时建议使用“Tab”制表符来进行缩进 体现逻辑性 2.使用if语句和for语句时一定用{}表明逻辑性,并且大括号独占一行 例如: for(i=0;i 3.运行结果出现溢出或烫 则表明程序输出了无法预料的内容 (只开辟了内存空间而并未赋值的内容都是无法预料的) 烫的应对方法: 输出函数都是以’\\0’为截止标志的,不正确的复制字符串数组容易将’\\0’的复制忽略掉,从而输出了无法预料的内容,所以复制时要检查最后一位(a[i+1])是否是’\\0’若不是则要添加上。而且尽量使用strcpy(a,b)函数来复制字符串数组 数据溢出的应对方法: 确认构造函数或设置函数的赋值方式是否是 “实参=形参”,若为“形参=实参”那必定出错 使用形如i+=j 或i*=j时,要确定i有初值(加法通常将i初值设为0,乘法设为1) 运算时,数据类型要尽量匹配,有时类型转换不当也容易造成溢出 4.边编写边编译 每写完一个函数时,建议至少编译一次以确保正确性,也防止问题的积累,任何人都不能做到编译一次通过 一定要多练昂~~ 一定要看懂 看透每一道练习题 多练才能记住程序的各种烦人的格式 看懂才能独立做出一道题,遇到问题才能顺利解决 好嘞 祝大伙期末考个好成绩昂 35