77范文网 - 专业文章范例文档资料分享平台

天津理工大学C++期末考试

来源:网络收集 时间:2019-04-09 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

实验一

一、 明确的概念:

(1)理解类和对象的概念;(具体见附一)

类是抽象的 对象是具体的 例如:你、我、他 都是人 那么 你、我、他就是对象 人就是类

(2)掌握类与对象的定义方法;

类的定义:

class 类名{ … /*定义这个类*/}; //(别忘了最后的分号) 对象的定义: 类名 对象名(参数);

(3)理解类的成员的访问控制的含义,公有和私有成员的区别;

public://访问属性为公有 通过外部直接访问 即:对象名.成员名或成员函数 private://访问属性为私有 不能通过外部直接访问(不声明访问属性时 系统默认为私有) 当出现对象名.成员(私有)时 编译器报错

protected://访问属性为保护 与private类似 但protected属性的成员可以继承 private不能继承

(4)掌握构造函数和析构函数的含义与作用、定义方式和实现;

构造函数:为数据成员开辟存储空间 函数名必须与类名相同 之前绝对不许说明返回值类型 void也不行 构造函数不能由用户调用 即:对象名.构造函数名(参数)是错误的 构造函数是随着对象的声明而调用的 例如: class Student{Student(){cout<<”Hello.”<

{cout<<”Hello.”<

运行结果: Hello. //<-这个Hello是主函数中的 Hello. //<-是声明A对象时调用的构造函数 构造函数中的Hello

析构函数功能与构造函数相反 注意调用时间和顺序(看书)

1

二、 练习项目 1.

输入下列程序,按要求进行实验,并记录实验的结果。 #include using namespace std;

class Coordinate {

public:

Coordinate(int x1, int y1){x=x1; y=y1;} Coordinate(Coordinate &p); ~Coordinate(){cout<<\ int getx(){return x;} int gety(){return y;} private: int x, y; };

Coordinate::Coordinate(Coordinate &p){//拷贝构造函数 x=p.x; y=p.y; cout<<\}

int main(){ Coordinate p1(3,4); 调用构造函数 调用拷贝构造函数(见书P89) Coordinate p2(p1); Coordinate p3=p2; cout<<\

程序结束时 调用析构函数 注意析构函数 return 0; 的调用顺序 从上至下 依此为 p3 p2 p1的}

析构函数 附:如何知道 该程序析构函数的调用顺序是p3 p2 p1 ? 答:将拷贝构造函数中 改为x=2*p.x; y=2*p.y 析构函数中 在cout<<”Destructor is called.”之后添加<<”x=”<

(1) 记录程序的运行结果 (2) 将Coordinate类中带有两个参数的构造函数进行修改,在函数体内增加如下语句:

cout<<”Constructor is called.”<

在主函数体内,添加如下语句:

Coordinate p4; ?错误原因:构造函数没有参数 构造函数为Coordinate::Coordinate(int ,int) Coordinate p5(2); ? 错误原因:参数数量不对

根据注释语句的提示实现类Date的成员函数,并将完整的程序编译、连接成功以保证程序能够正确运行。 #include class Date{

2.

2

public:

void printDate(); //显示日期 void setDay(int); //设置日的值

分析: void setMonth(int); //设置月的值

1.题目中 Date类的数据成员为day, month, year 且均为 void setYear(int); //设置年的值

整型访问属性为私有 主函数中声明了testDay对象 private:

int day, month, year; 2.数据成员均为私有 则不能通过tesDay.day=<数值>的方}; 法来设置 题目中给出了 void setDay(int) void int main(){ setMonth(int) 和void setYear(int)三个成员函数去是指day Date testDay; month 和 year 的值 还有一个void printDate()来输出 testDay.setDay(5); 3.准备工作结束 开始编程 看程序 仅差4个成员函数未 testDay.setMonth(10); 定义 类外定义 要写出作用域 即该函数属于哪个类: testDay.setYear(2010); 格式: 返回值类型 作用域::函数名 参数表 testDay.printDate(); void Date::setDay (int d)/*定义时必须}; 要给形参一个名字 这里给的是*/d {day=d}//设置了day 的值 其他函数依此类推 输出函数就不用再唠叨了 void Date::setDay(int d){day=d;} 4.验证结果 出现溢出数据时查看是否写反了 例如写成void Date::setMonth(int m){month=m;} d=day 了解设置函数的作用机制 见附二 void Date::setYear(int y){year=y;}

void Date::printDate(){cout<

3. 下面是一个计算器类的定义,请完成该类的成员函数的实现,并设计一个主函数使用该类和相关成员函数以测试

该类设计的正确性。

#include using namespace std;

class counter {

public: counter(int number=0) //构造函数 { value=number; }

void increment(); //给value原值加1 void decrement(); //给value原值减1 int getvalue(); //取得计数器值 int print(); //显示计数 private: int value; //数据成员 };

void counter::increment(){value++;cout<<\(其中的cout语句可以不写) void counter::decrement(){value--;cout<<\

3

int counter::getvalue(){return value;}

int counter::print(){cout<<\

int main(){ cout<<\//定义counter类的几个对象并调用有关成员函数 int a; cin>>a; counter c(a); //输入a 并将a作为参数 通过构造函数为对象中的value赋值 c.increment(); c.print(); //题目要求验证 所以使用输出函数一次验证value的值 c.decrement(); c.print(); return 0; } 4.

定义一个类ClsName,要求该类设计如下: (1)该类有两个整型数据成员x和y;

(2)为该类重载三个不同的构造函数:分别为无参数、带一个参数和带两个参数的构造函数,要求在构造函数中输出必要的信息以示区别;

(3)设计2个成员函数用来读取数据成员x和y; (4)设计2个成员函数用来设置数据成员x和y;

(5)设计1个成员函数用来在屏幕上打印输出数据成员x和y;

(6)在main()函数中用三个不同的构造函数创建3个对象,并使用所有的成员函数对这些对象进行必要的操作。

class ClsName {

public: int a,b; ClsName(int a,int b){cout<<\//以下三个(2)中要求的重载构造函数 ClsName(int a){cout<<\题目要求加以区别,所以cout输出不同内容加以区分 ClsName(void){cout<<\ int getx(){return x;} ?因为x,y的访问属性为私有,不能由主函数直接访问 所以会设置读取函数专门负责返回相应的值 int gety(){return y;}

重载:函数名相同,参数的类型不同或者 void setx(){cout<<\

个数不同、或者都不同。 即根据带入参数 void sety(){cout<<\

的类型、数量的不同,来实现不同的功能 void print(){cout<<\private:

int x,y; ?(1)中要求的两个整型数据成员 };

int main() { int a,b; cout<<\ cin>>a;cin>>b; ClsName t1(a,b);

4

t1.print(); t1.setx();t1.sety(); t1.print(); cout<<\number:\ cin>>a; ClsName t2(a); t2.print(); t2.setx();t2.sety(); t2.print(); cout<<\ ClsName t3; t3.print(); t3.setx();t3.sety(); t3.print(); return 0; 5. 建立类cylinder,包括两个数据成员radius和height,分别表示圆柱体的半径和高度, cylinder类的构造函数被传递了两个double值来初始化这两个成员;定义成员函数area()和volume用来求圆柱体的表面积和体积,定义成员函数print()打印cylinder类的相关信息。最后,在主函数中对cylinder类的设计进行测试。 这题很简单 没啥说的

#include class cylinder { public: }; int main() { }

int a,b; cylinder v; cout<<\cin>>a;

cout<<\cin>>b; v.set(a,b); v.print(); return 0;

void set(double r,double h){radius=r,height=h;} double area(){return (radius*3.14);} double volume(){return (height*area());}

void print(){cout<<\olume=\double radius,height;

private:

5

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库天津理工大学C++期末考试在线全文阅读。

天津理工大学C++期末考试.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/581306.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: