C++语言程序设计实验答案_类与对象
C++语言程序设计实验4(类和对象)

是:用初始对象的每个数据成员的值,初始化将要建立的对象的对应数据成员。
构造函数和拷贝构造函数的声明格式如下:
class 类名
{
public: 类名(形参); 类名(类名 &对象名);
//构造函数 //拷贝构造函数
... ...
}; 类名::类名()
//构造函数的实现
{ 函数体;
} 类名::类名(类名 &对象名)
6. 本章小结
本章主要介绍了面向对象的基本概念、类和对象的声明、构造函数、析构函数、内联成 员函数、拷贝构造函数、类的组合。
类是面向对象程序设计中最重要、最基本的概念,也是学习面向对象方法时遇到的第 1 个难点。类是对逻辑上相关的函数和数据的封装,是对问题的抽象描述。
要理解类与对象,必须要结合实例来学习,读者可以思考:除了书中列出的例子,现实 世 界 中 还 有 哪 些 有 形 或 无 形 的 事 务 可 以 被 抽 象 为 程 序 中 的 类 ,每 个 类 又 存 在 哪 些 对 象( 实 体 )。 这样可以对类的概念了解的快一些。
本章开始的每章的最后有一个实例——人员信息管理程序,这个例子贯穿后续各章,利 用每章介绍的只是不断丰富程序的功能,建议课后仔细阅读、体会,并尝试修改、补充程序 的功能。
另外,本章中还介绍了利用 UML 语言表示类与对象的方法,以后各章还将进一步介绍 用 UML 语言表示类之间的关系,但这远不是 UML 语言的全部,这方面的内容也不是初学者 学习的重点,读者可以不必深究,了解一下就可以了。如果有需要,可以另外学习软件工程 的课程。
面向对象的程序设计目的是:实现软件设计的产业化。主要观点是认为自然界是由实体 (对象)所组成。程序设计的出发点是:使用面向对象的观点来描述模仿并处理现实问题。 他要求:高度概括、分类、抽象。
C++实验关于类与对象的答案

第七次实验1、写出下列程序的运行结果1)#include <iostream>using namespace std;int f(int a){return ++a;}int g(int& a){return ++a;}void main(){int m=0,n=0;m+=f(g(m));n+=f(f(n));cout<<"m="<<m<<endl;cout<<"n="<<n<<endl;}2)#include <iostream>using namespace std;class Demo{public:Demo(){cout<<"default constructor\n";}Demo( Demo &x){cout<<"copy constructor\n";}};Demo userCode(Demo b){ Demo c(b);return c;}void main(){ Demo a,d;cout<<"calling userCode()\n";d = userCode(a);}执行上面的程序的过程中,构造函数Demo()和Demo(Demo &x)被调用的次数分别是多少次?2、声明一个CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。
观察构造函数及析构函数、复制构造函数的的执行过程。
3、设计一个日期类DA TE,包括年、月、日三个数据成员和如下成员函数:构造函数、设置日期函数、显示日期函数、判断该年是否闰年函数、获得该天是当年的第几天函数。
#include"iostream"using namespace std;class DA TE{int year,month,day;public:DA TE(){};void settime();void showtime();void countday();void decideyear();};void DA TE ::settime(){int a,b,c;cout<<"input year, month, day"<<endl;cin>>a>>b>>c;year=a;month=b;day=c;}void DA TE ::showtime(){cout<<"输入的日期是"<<year<<"年"<<month<<"月"<<day<<"日"<<endl;}void DA TE::decideyear(){if(year%400==0 || year%4==0 && year%100!=0)cout<<year<<"年是闰年"<<endl;else cout<<year<<"年不是闰年"<<endl;}void DA TE::countday(){int count=0,i;if(month==1) count=day;if(month==2) count=31+day;if(month>=3){for(i=3;i<month;i++){if(i==3||i==5||i==7||i==8||i==10||i==12) count+=31;else if(i==4||i==6||i==9||i==11) count+=30;}if(year%400==0||year%4==0&&year%100!=0) count=count+31+29+day;else count=count+31+28+day;}cout<<"该天是该年的第"<<count<<"天"<<endl;}void main(){DA TE date;date.settime();date.showtime();date.decideyear();date.countday();}4、定义人民币类,数据成员包括:圆、角、分,均为整型。
C#实验报告类与对象

实验项目名称:类与对象一、实验目的和要求1.C#程序编写的过程和基本要求;2.面向对象的程序设计思维(基本思想);3.类的组成、声明和定义;4.对象的定义(类的实例化);5.理解字段和属性,属性的定义以及相对应的访问修饰符;6.方法以及方法的重载;7.构造函数的使用;8.类的继承(重点);9.类的多态性(难点)二、实验内容和过程1.上机实验1:问题描述:编写一个学生类,其中包括3个数据成员:学号、姓名、年龄,以及若干成员函数。
同时编写主函数使用这个类,实现对学生数据的赋值和输出。
要求:使用成员函数实现对数据的输出(显示学生的相关信息);使用构造函数实现对数据的输入(可以重载多个构造函数并使用)。
提示:三个成员变量使用什么访问控制符?提高要求:将三个成员变量定义为属性,并且学号和姓名只能读不能写,年龄可写,但是要符合18—26 之间。
解决方法说明:①在学生类中,定义学号、姓名、年龄相关的字段以及属性;②编写带三个参数的构造函数,实现对学生学号、姓名、年龄数据的输入;③重载构造函数,带两个参数,实现对学生学号、姓名的输入;④编写成员函数print(),实现对数据的输出;⑤编写主函数,使用这个类,实现对学生数据的赋值和输出;●实例化学生类;●使用对象.print()方法。
关键代码及注释:class student{protected string stuNum;protected string stuName;protectedintstuAge;public string StuNum//定义属性:学号{get{returnstuNum;}}public string StuName //定义属性:姓名{get{returnstuName;}}public intStuAge//定义属性:年龄{get{returnstuAge;}set{if (value >= 18 || value <= 26) //限制年龄{stuAge = value;}}}public student(string number, string name, int age) //构造函数1,实现对数据的输入{stuNum = number;stuName = name;stuAge = age;Console.W riteLine("请输入学号");stuNum = Console.ReadLine();Console.W riteLine("请输入姓名");stuName = Console.ReadLine();Console.W riteLine("请输入年龄");stuAge = Convert.T oInt32(Console.ReadLine());}public student(string number, string name) //构造函数2,实现对数据的输入{stuNum = number;stuName = name;Console.W riteLine("请输入学号");stuNum = Console.ReadLine();Console.W riteLine("请输入姓名");stuName = Console.ReadLine();}public void print() //print方法,输出学生信息{if (stuAge != 0){Console.W riteLine(stuName + "的学号是:" + stuNum + ",年龄是:" + stuAge); Console.ReadLine();}else{Console.W riteLine(stuName + "的学号是:" + stuNum);Console.ReadLine();}}public static void Main() //主函数,使用学生类{student A = new student("209", "A", 18);A.print();student B = new student("11", "B");B.print();}}出错调试说明:排除错误的数据类型数据的输入,没有出错。
C 实验二类和对象

实验二类和对象1.实验目的:(1) 掌握Visual C++6.0基本操作(2) 了解C++程序运行环境;(3) 掌握简单的C++程序的开发过程(编辑、编译、连接和运行)。
(4) 掌握类及其成员的定义方法;(5) 掌握对象的创建方法;2.实验内容:2.1按要求分析程序指出程序运行的结果:1)分析下面的程序,并给出程序运行的结果:#include<iostream.h>class change{char c1,c2;public:void set(char a){c2=((c1=a)-32);}void print(){cout<<c1<<" can be upwritten as "<<c2<<endl;}};void main(){change a,b;a.set('a');b.set('b');a.print();b.print();}运行结果:程序分析:2)分析下面的程序,并给出输出结果:#include<iostream.h>class pair{char c1,c2;public:void set(char b){c1=1+(c2=b);}unsigned where_am_I(){return((unsigned)this);}void print(){cout<<c1<<"+"<<c2<<"\t";}};void main(){pair a,b,c;a.set('A');b.set('B');c.set('C');a.print();cout<<"is at "<<a.where_am_I()<<'\n';b.print();cout<<"is at "<<b.where_am_I()<<'\n';c.print();cout<<"is at "<<c.where_am_I()<<'\n';}运行结果:程序分析:2.2编写并调试程序:1)下面是一个类的测试程序,给定主函数,请写出类的定义,构成一个完整的程序,使执行程序后输出结果为:88-32=56给定的主函数为:void main(){Tst t;t.init(88,32);t.print();}2)编程分析由主函数可知,要创建的类名为Tst,一个类对象为t,类中含有两个公有成员函数init()和print(),利用函数init()对两个私有成员数据赋值,即为减数与被减数的数值,为了程序的实现需要定义第三个成员数据作为减法之差。
C++语言程序设计实验答案-类与对象

C++语言程序设计实验答案-类与对象实验04 类与对象(6学时)(第4章类与对象)一、实验目的(1) 掌握类的声明和使用。
(2) 掌握类的声明和对象的声明。
(3) 复习具有不同访问属性的成员的访问方式。
(4) 观察构造函数和析构函数的执行过程。
(5) 学习类的组合使用方法。
(6) 使用Visual Studio 2010的调试功能观察程序流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。
二、实验任务4_1 声明一个CPU类。
包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。
其中,rank为枚举类型CPU_Rank,声明为enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 }; frequency为单位是MHz的整型数,voltage为浮点型的电压值。
观察构造函数和析构函数的调用顺序。
4_2 声明一个简单的Computer类。
有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数run和stop。
cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。
4_3 声明一个表示时间的结构体。
可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。
4_4(习题4-10)设计一个用于人事管理的People(人员)类。
考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号),sex(性别)、birthday(出生日期)、id(身份证号)等。
其中“出生日期”声明为一个“日期”类内嵌子对象。
用成员函数实现人员信息的录入和显示。
要求包括:构造函数和析构函数、内联成员函数、组合。
三、实验步骤1.(验证)声明一个CPU类,观察构造函数和析构函数的调用顺序。
首先声明枚举类型CPU_Rank,例如enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 },再声明CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,声明成员函数run和stop,用来输出提示信息,在构造函数和析构函数中也可以输出提示顺序。
C++实验1-类和对象

实验一类和对象实验课程名:面向对象程序设计(C++)专业班级:学号:姓名:实验时间:实验地点:指导教师:一、实验目的和要求(1) 理解类和对象的概念,掌握声明类和定义对象的方法。
(2) 掌握构造函数和析构函数的实现方法。
(3) 初步掌握使用类和对象编制C++程序。
(4) 掌握对象数组、对象指针和string类的使用方法。
(5) 掌握使用对象、对象指针和对象引用作为函数参数的方法。
(6) 掌握类对象作为成员的使用方法。
(7) 掌握静态数据成员和静态成员函数的使用方法。
(8) 理解友元的概念和掌握友元的使用方法。
二、实验内容1.输入下列程序//test4-1.cpp#include<iostream>using namespace std;class Coordinate{ public:Coordinate(int x1,int y1){ x=x1;y=y1;}Coordinate(Coordinate &p);~Coordinate(){ cout<<”Destructor is calleded\n”;}int getx(){return x;}int gety(){return y;}private:int x,y;};Coordinate::Coordinate(Coordinate &p){ x=p.x;y=p.y;cout<<”copy-initialization Constructou is called\n”;}int main(){ Coordinate p1(3,4);Coordinate p2(p1);Coordinate p3=p2;cout<<”p3=(“<<p3.getx()<<”,”<<p3.gety()<<”)\n”;}(1) 写出程序的运行结果。
(2) 将Coordinate类中带有两个参数的构造函数进行修改,在函数体内增添下述语句:cout<<”Constructor is called.\n”;写出程序的运行结果,并解释输出结果。
C实验五类与对象.doc

实验六类与对象类是面向对彖程序设计中最棊木并H最重要的概念,也是面向对彖方法的第一个难点。
类是对逻辑上相关的函数与数据的封装,是对问题的抽象描述。
对象是类的实例化,是抽象的具体实现,类和对象的关系,是抽象与具体的关系,类概括出事物的木质特点,对象是对这些特点的具体体现。
实验目的和要求:1.掌握类和对象的使用。
2.掌握类的构造函数少析构函数。
3.掌握构造函数的重载。
4.了解拷贝构造两数的方法。
5.熟悉静态成员的使用和意义。
6.掌握友元的含义(友元函数、友元成员、友元类)。
7.掌握new和delete的使用。
实验内容:一、程序分析题1、写出以下程序的执行结果。
#include <iostream>using namespace std;class Tdcite{public:Tdate(){ Init(4,15,1995); }Tdate(int d){ lnit(4,d,1996); }Tdate(int m,int d){ Init(m,d,1997); }Tdate(int m,int d,int y){ Init(m,d,y); }protected:int month;int day;int year;void Init(int m,int djnt y){month=m; day=d; year=y;cout «month «H/M «day «,7M «year «endl;}};int main(){Tdate aday;Tdate bday(10);Tdate cday(2,12);Tdate dday( 1,2,1998);return 0;2、写出以下程序的执行结果。
#include <iostrcam> using namespace std;class MyClassf public:MyClass();MyClass(int);〜MyClass();void DisplayO;protected:int number;};MyClass::MyClass(){number =0;cout «n Constructing normallyAn*'; } MyClass::MyClass(int m):number(m){cout «n Constructing with a number: 4 5 6 7 8 9 10 11 «number «endl;}void MyClass::Display(){ cout «H Display a number: M «number «endl; } MyClass::〜MyClass(){ cout «H Destructing.\n n; }int main(){MyClass obj 1;MyClass obj2(20);objl.Display();obj2.Display();return 0;}3、写出以下程序的执行结果。
c 面向对象程序设计教程习题答案

c 面向对象程序设计教程习题答案C面向对象程序设计教程习题答案在学习C面向对象程序设计的过程中,习题答案是非常重要的一部分。
通过练习习题,可以加深对知识点的理解,提高编程能力。
下面我们就来看一些常见的C面向对象程序设计习题及其答案。
1. 什么是面向对象程序设计?面向对象程序设计是一种程序设计范式,它以对象为中心,通过封装、继承和多态等特性来组织和管理代码。
面向对象程序设计可以提高代码的可维护性和可重用性,是现代软件开发中非常重要的一部分。
2. 什么是类和对象?类是一种抽象的数据类型,它描述了一类对象的共同特征和行为。
对象是类的实例,它具体描述了一个具体的实体。
在C面向对象程序设计中,类和对象是非常重要的概念。
3. 请编写一个简单的类和对象的例子。
```c#include <stdio.h>// 定义一个简单的类class Person {public:int age;char name[20];void display() {printf("Name: %s, Age: %d\n", name, age);}};int main() {// 创建一个对象Person p;p.age = 25;strcpy(, "Alice");p.display();return 0;}```4. 什么是封装?封装是面向对象程序设计中的一种重要特性,它将数据和行为封装在一个类中,对外部隐藏了内部的实现细节。
封装可以保护数据的安全性,同时提供了简单的接口供外部访问。
5. 请编写一个简单的封装例子。
```c#include <stdio.h>// 定义一个简单的类class Circle {private:double radius;public:void setRadius(double r) {radius = r;}double getArea() {return 3.14 * radius * radius;}};int main() {// 创建一个对象Circle c;c.setRadius(5.0);printf("Area: %f\n", c.getArea());return 0;}```以上就是一些常见的C面向对象程序设计习题及其答案。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验04 类与对象(6学时)(第4章类与对象)一、实验目的二、实验任务4_1 声明一个CPU类。
包含等级(rank)、频率(frequency)、电压(voltage)等属性,有两个公有成员函数run、stop。
其中,rank为枚举类型CPU_Rank,声明为enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 }; frequency为单位就是MHz的整型数,voltage为浮点型的电压值。
观察构造函数与析构函数的调用顺序。
4_2 声明一个简单的Computer类。
有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等,有两个公有成员函数run与stop。
cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,声明并实现这个类。
4_3 声明一个表示时间的结构体。
可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。
4_4(习题4-10)设计一个用于人事管理的People(人员)类。
考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号),sex(性别)、birthday(出生日期)、id(身份证号)等。
其中“出生日期”声明为一个“日期”类内嵌子对象。
用成员函数实现人员信息的录入与显示。
要求包括:构造函数与析构函数、内联成员函数、组合。
三、实验步骤1、(验证)声明一个CPU类,观察构造函数与析构函数的调用顺序。
首先声明枚举类型CPU_Rank,例如enum CPU_Rank{ P1=1, P2, P3, P4, P5, P6, P7 },再声明CPU类,包含等级(rank)、频率(frequency)、电压(voltage)等私有数据成员,声明成员函数run与stop,用来输出提示信息,在构造函数与析构函数中也可以输出提示顺序。
在主程序中声明一个CPU的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。
程序名:lab4_1、cpp。
(程序见步骤2)★程序的运行结果:2、(示例)调试程序文件lab4_1、cpp。
使用调试功能观察程序lab4_1、cpp的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序。
参考程序如下:};//const声明为常成员函数,禁止改变对象的数据成员的值void main(){CPU a(P6,300,2、8);a、run();a、stop();}3、(操作)调试操作步骤如下:(1)单击“调试| 逐语句”命令,系统进行单步执行状态,程序开始运行,一个DOS窗口出现,此时Visual Studio中光标停在main()函数的入口处。
(2)单击“调试| 逐过程”,此时,光标下移,程序准备执行CPU对象的初始化。
(3)单击“调试| 逐语句”,程序准备执行CPU类的构造函数。
(4)连续单击“调试| 逐过程”,观察构造函数的执行情况,直到执行完构造函数,程序回到主函数,光标停在“a、run();”行前。
(5)此时程序准备执行CPU对象的run()方法,单击“调试| 逐语句”,程序进入run()成员函数,连续单击“调试| 逐过程”,直到光标停在“a、stop();”行前。
(6)继续执行程序,参照上述的方法,观察程序的执行顺序,加深对类的构造函数、析构函数、成员函数的执行顺序的认识。
(7)单击Step Into,进入~CPU()析构函数,连续单击“调试| 逐过程”,直到光标又停在main()函数的“}”行前。
(8)将光标移到main()函数的“}”后,右击,再单击“运行到光标处”,运行结束。
(9)再试试“调试”菜单栏中别的菜单项,熟悉调试的各种方法。
4、(编程)声明CPU类、RAM类以及CDROM类。
再声明Computer类,观察类对象及其成员变量的构造与析构顺序,以及成员函数的调用。
首先声明CPU类(可使用lab4_1、cpp中声明的CPU类)、RAM类以及CDROM类。
再声明Computer类:声明私有数据成员cpu、ram、cdrom,声明公有成员函数run、stop,可在其中输出提示信息。
在主程序中声明一个Computer的对象,调用其成员函数,观察类对象及其成员变量的构造与析构顺序,以及成员函数的调用。
程序名:lab4_2、cpp。
提示:RAM类中有一个数据成员(int ramtype;);CDROM类中有一个数据成员(int cdromtype;);为了观察程序执行的顺序,类似程序lab4_1、cpp,在构造函数、析构函数、run与stop函数中应包含一条输出语句,给出相关的信息;每个类中至少包括:数据成员、构造函数、析构函数、取值成员函数、赋值成员函数。
★程序及运行结果:void main(){COMPUTER a(P6,300,2、8,2,500);a、run();a、stop();}5、(操作)调试程序lab4_2、cpp。
使用调试功能观察lab4_2、cpp程序的运行流程,跟踪观察类的构造函数、析构函数、成员函数的执行顺序,特别注意观察成员变量的构造与析构顺序。
6、编程,习题2-31)声明一个表示时间的结构体。
声明一个表示时间的结构体,可以精确表示年、月、日、小时、分、秒;提示用户输入年、月、日、小时、分、秒的值,然后完整地显示出来。
建立一个项目lab4_3,包含一个C++源程序lab4_3、cpp。
在主程序中实现输入输出。
参考运行结果:★程序及运行结果://lab4_3、cpp(习题2-31)#include<iostream>using namespace std;struct time{short yy,mm,dd,hh,mi,ss;};void main(){time t1={2012,2,25,10,30,20};//赋初值cout<<t1、yy<<"年"<<t1、mm<<"月"<<t1、dd<<"日"<< t1、hh<<":"<<t1、mi<<":"<<t1、ss<<endl;time t2;cout<<"输入年份:"; cin>>t2、yy;cout<<"输入月份:"; cin>>t2、mm;cout<<"输入日:"; cin>>t2、dd;cout<<"输入小时:"; cin>>t2、hh;cout<<"输入分钟:"; cin>>t2、mi;cout<<"输入秒:"; cin>>t2、ss;cout<<t2、yy<<"年"<<t2、mm<<"月"<<t2、dd<<"日"<< t2、hh<<":"<<t2、mi<<":"<<t2、ss<<endl;}7、(编程,习题4-10)设计一个用于人事管理的People(人员)类。
类People的属性:number(编号),sex(性别)、birthday(出生日期)、id(身份证号)等。
其中“出生日期”声明为一个“日期”类内嵌子对象。
用成员函数实现人员信息的录入与显示。
要求包括:构造函数与析构函数、内联成员函数、组合。
程序名:lab4_4、cpp。
提示:构造函数与析构函数的函数体可以定义为空;两个类中对年、月与日分别定义取值与赋值成员函数;People类中的数据成员为:unsigned number;//编号,4位数字,第一位为1char sex;//性别,m为男,w为女Date birthday;//出生日期unsigned id;//身份证号,8位数字,第一位不为0参考程序运行结果:★程序及运行结果:// lab4_4、cpp#include<iostream>using namespace std;cout<<"输入出生日期:"; cin>>yy>>mm>>dd;p2、Setbirthyy(yy); p2、Setbirthmm(mm); p2、Setbirthdd(dd);cout<<"输入身份证号:"; cin>>d;p2、Setid(d);//输出cout<<"\n输出"<<endl;cout<<p1、Getnumber()<<" "<<p1、Getsex()<<" "<<p1、Getbirthyy()<<"-"<<p1、Getbirthmm()<<"-"<<p1、Getbirthdd()<<" "<<p1、Getid()<<endl;cout<<p2、Getnumber()<<" "<<p2、Getsex()<<" "<<p2、Getbirthyy()<<"-"<<p2、Getbirthmm()<<"-"<<p2、Getbirthdd()<<" "<<p2、Getid()<<endl;}三、实验提示步骤6提示先在主函数外用struct定义一个结构体,名称可为time,包含成员“年、月、日、时、分、秒”;在主函数中,声明一个time的变量t1,并初始化“年、月、日、时、分、秒”为“2012、2、25、10、30、20”;将变量t1的值取出,用cout显示日期,注意组合;再声明一个time的变量t2;依次输入“年、月、日、时、分、秒”,注意在输入前给出提示信息。