C++ 上机实验答案 类的定义与应用
更新时间:2024-04-12 09:09:01 阅读量: 综合文库 文档下载
- c罗推荐度:
- 相关推荐
实验2 类的定义与应用
1、实验目的和要求:
掌握类定义的方法,理解类类型,实例的含义,体会面向对象程序设计中数据隐藏的概念。理解构造函数和析构函数的作用和运行时间,掌握拷贝构造函数的作用。并熟练掌握复杂对象类型的运用。
2、实验内容:
(1)定义一个时间类Time,它能提供由时、分、秒组成的时间。要求能够修改时间和打印出时间。 #include
void displayTime(); void setTime();
private: };
void Time::displayTime() { }
void Time::setTime() { }
cin>>hour>>minute>>second;
cout< (2)编写一个计数器类,定义一个私有数据成员,通过两个成员函数,分别使其完成加1和减1操作。用构造函数数据成员初始化为0,输出函数可以输出数据成员的值。 #include void functionP(); void functionM(); void setNum(); void print(); private: }; void counter::functionP() { } void counter::functionM() { } void counter::setNum() { } void counter::print() { } cout<<\cNum = 0; cNum --; cNum ++; int cNum; (3)设计一个时间类,要求包含以下功能: 数据成员:时、分、秒 成员函数: 各种重载构造函数 析构函数 可以通过函数分别设置时间的各个组成部分 也可以整体设置时间 有一个tick函数,负责给当前时间加1秒钟,然后输出新的时间 #include Time::Time(int Hour,int Minute,int Second) { hour = Hour; minute = Minute; int hour,minute,second; void displayTime(); Time(); Time(int Hour,int Minute,int Second); ~Time(); void setHour(int h); void setMinute(int m); void setSecond(int s); void setTime(int hou,int min,int sec); void tick(); } second = Second; Time::~Time() { } void Time::setHour(int h) { } void Time::setMinute(int m) { } void Time::setSecond(int s) { } void Time::setTime(int hou,int min,int sec) { } void Time::tick() { if(second = 59) { if(minute = 59) { hour = hou; minute = min; second = sec; second = s; minute = m; hour = h; cout<<\ } } else { } } else { } second = 0; minute = 0; hour ++; second = 0; minute ++; second ++; #include public: Rational(int nn,int mm); //构造函数 void R_add(Rational & A); //加 void R_sub(Rational & A); //减 void R_mul(Rational & A); //乘 void R_div(Rational & A); //除 void print(); //以简分数形式显示,注意约分 private: void simple( ); //约分 int m; //分母 int n; //分子 }; Rational::Rational(int nn,int mm) { n = nn; m = mm; } void Rational::R_add(Rational &A) { n = A.m*n + A.n*m; m = A.m*m; simple(); } void Rational::R_sub(Rational &A) { n = A.m*n - A.n*m; m = A.m*m; simple(); } void Rational::R_mul(Rational &A) { n *= A.n; m *= A.m; simple(); } void Rational::R_div(Rational &A) { n *= A.m; m *= A.n; simple(); } void Rational::simple() { int num = 1; for(int i = 1;i<=n;i++ ) { if(n%i ==0 && m%i == 0 &&i>=num) num = i; } n = n/num; m = m/num; } void Rational::print() { cout< void main() { Rational R1(1,1); Rational R2(5,10); R1.R_mul(R2); R1.print(); } (5) 定义一个类包含一个整型数的指针变量,在构造函数中用new分配10个整型数的内存空间,在析构函数中用delete释放内存空间,并编写给内存空间赋值和输出的成员函数。 #include public: Pointer(); ~Pointer(); private: int *ptr; }; Pointer::Pointer() { ptr =new int [10]; for(int i = 0;i<10;i++) cin>>ptr[i]; } Pointer::~Pointer() { delete ptr; } (6) 完成String类 class String { public: String(const char *str = NULL); //普通构造函数 String(const String &other); //拷贝构造函数 ~ String(); //析构函数 private: char *m_data; // 用于保存字符串 }; 完成String 的3个成员函数,并编写一个主函数,在主函数中对所编写的成员函数进行测试。 /* 完成String 的3个成员函数,并编写一个主函数,在主函数中对所编写的成员函数进行测试。 */ #include { public: String(const char *str = NULL); //普通构造函数 String(const String &other); //拷贝构造函数 void display(); ~ String(); //析构函数 private: char *m_data; // 用于保存字符串 }; String::String(const char *str) { } String::String(const String &other) { if(other.m_data == NULL) { } m_data = new char [1]; m_data = '\\0'; if(str = NULL) { } else { int length = strlen(str); m_data = new char [length +1]; strcpy(m_data,str); } m_data = new char [1]; m_data = '\\0'; else { int length = strlen(other.m_data); m_data = new char [length +1]; strcpy(m_data,other.m_data); } } String::~String() { delete[] m_data; } void String::display() { cout<<*m_data< void main() { const char *str = \ String string1(str); string1.display(); String string2(string1); string1.~String(); string2.display(); string2.~String(); } 7)完成Array类 class Array { public: Array(); //所有数组元素初始化为0 ( int& getData(int i); //返回下标为i的数组元素的引用 void print(); //打印出所有数组元素的值 void input(); //对所有数组元素进行输入 private: int m_data[10]; }; 完成Array 的成员函数,并编写一个主函数,在主函数中对所编写的成员函数进行测试。 #include Array(); //所有数组元素初始化为0 int& getData(int i); //返回下标为i的数组元素的引用 void print(); //打印出所有数组元素的值 void input(); //对所有数组元素进行输入 private: int m_data[10]; }; Array::Array() { for(int num=0;num<10;num++) m_data[num] = 0; } int& Array::getData(int i) { return m_data[i]; } void Array::input() { for(int num=0;num<10;num++) cin>>m_data[num]; } void Array::print() { for(int num=0;num<10;num++) cout< void main() { Array arr; arr.print(); arr.input(); arr.print(); cout< (8) 定义圆类(由圆心坐标点类和半径组成),利用友元函数判断两个圆的位置关系(圆间关系包括相交、相切、相离)。 (9) 定义类Point.要求定义类对象时,可以有这样的定义语句: #include Point (int a, int b) { x=a;y=b; } void fun (Point &p); void fun (Point * p); private: int x,y; }; void Point::fun (Point &p) { x=p.x ; y=p.y ; cout<< \} void Point:: fun (Point *p) { x=p->x ; y=p->y ; cout<< \ } void main() { Point p(1,2),q(3,4) ; p.fun(q) ; q.fun(&q); } 改正程序中小的错误,给出程序运行的结果,并对程序进行分析。 3、思考题: 结合编程实践回答下列的问题。 (1) (2) (3) 结合第一个例子,说明什么是类?什么是对象?你是如何理解类和对象的? 面向对象的程序设计与结构化程序设计有何不同? 拷贝构造函数那些情况下会被调用,分别给出例子?
正在阅读:
C++ 上机实验答案 类的定义与应用04-12
交易中的“反人性”较量09-10
工农街道办事处20xx年年度总结02-26
《寻找最美孝心少年颁奖典礼》观后感01-02
2015国家公务员考试时事热点:大学学费迎14年来首次调整 浙江将03-22
吸烟的女人02-14
第三篇 组织答案09-23
投顾培训“速成”教程01-19
100以内加减混合运算口算题08-12
浙江海盐县某地块项目可行性研究报告书04-26
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- C++
- 上机
- 定义
- 答案
- 实验
- 应用
- 党委农办如何更好发挥组织协调职能
- 第六课 参与政治生活
- 2000年临床执业医师《医学综合(笔试部分)1》试题及答案
- 2018年全国各地高考物理模拟试题《磁场》试题汇编(含答案解析)
- 归纳与演绎在小学数学课程教学中的应用
- 关于中小企业和涉农贷款减免条件的认定
- “两基”迎国检工作简报 第1期
- N780精简优化大内存ROM发布
- 狮王英语怎么样好不好少儿英语培训狮王未来素质教育从应试到应用
- 研究生英语阅读教程(基础级)第三次修订版课文参考译文
- 2015年最新煤矿三违鉴定(修改)
- 人教版(PEP)三年级英语下册Unit 6 How many Part B st
- 对小学数学课堂教学有效性的思考
- 维修电工技能竞赛方案
- JAVA笔试题--Java选择题100道
- 生产管理部分习题参考答案
- 河南师范大学中国古代文学专业攻读硕士学位研究生培养方案
- 部编版语文三年级下册前四单元和期中测试题(有答案)
- 机械制图公差与量具
- 中央企业负责人经营业绩考核暂行办法-2013年1月1日