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

合集下载

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

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

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

C++实验关于类与对象的答案

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、定义人民币类,数据成员包括:圆、角、分,均为整型。

实验二类和对象_参考答案

实验二类和对象_参考答案

实验⼆类和对象_参考答案实验⼆类和对象(参考答案)班级:学号:姓名:成绩:⼀.实验⽬的1.理解⾯向对象程序设计的基本思想;2.掌握类和对象的概念、定义和使⽤⽅法。

3.掌握不同特性对象成员的访问⽅法。

⼆.使⽤的设备和仪器计算机+Windows XP +Visual C++6.0三.实验内容及要求1、定义⼀个表⽰长⽅体类Cuboid,数据成员包括length(长)、width(宽)、height(⾼),成员函数包括长⽅体的输⼊、输出、计算体积和表⾯积等。

在主函数中,定义3个长⽅体的对象,并调⽤成员函数完成其功能。

2、定义⼀个学⽣类Student,数据成员包括学号、姓名、数学成绩、英语成绩和C++成绩,成员函数包括:输⼊学⽣的信息函数;输出学⽣的信息函数;设置学⽣的信息函数;计算学⽣的平均成绩的函数。

在main函数中调⽤以上函数实现相应功能。

3、定义⼀个图书类Book,在该类中包括以下数据成员和成员函数:数据成员:id(书号)、bookname(书名)、price(价格)、total(总存书数量)、number (当前剩余图书数量)成员函数:Input()——图书信息输⼊;Output()——图书信息输出;Borrow()——借阅图书,并显⽰当前剩余图书数量;Restore()——归还图书,并显⽰当前剩余图书数量。

在主函数中,要求创建某种图书对象,并对该图书进⾏简单的输⼊、输出、借阅和归还管理。

选择题:4、根据以下要求类的编写。

1)定义⼀个⽇期类Date,数据成员包括年、⽉、⽇,成员函数包括:Input()——⽇期信息输⼊;Output()——⽇期信息输出;Set()——设置⽇期信息2)在第2题Student类中增加⼀个出⽣⽇期成员,使⽤Date类来定义。

然后修改相应的成员函数,并增加⼀个成员函数GetAge,⽤来计算并返回学⽣的年龄。

1、程序代码:#includeusing namespace std;class Cuboid{public:void Input();void Show();float Volume();float Area();private:float length;float width;float height;};void Cuboid::Input(){cout<<"please input length,width,height:"; cin>>length>>width>>height;}void Cuboid::Show(){cout<<"length="<Cuboid1.Show();cout<<"V olmue="<cout<<"Area="<cout<Cuboid2.Input();cout<<"Cuboid2 Information:"<Cuboid2.Show();cout<<"V olmue="<cout<<"Area="<cout<运⾏结果:2、程序代码://student.h 学⽣信息的头⽂件#include#includeusing namespace std;class Student{public:void Input_Stu(); //输⼊学⽣信息函数void Show_Stu(); //输出学⽣信息函数void Set(int n,string nm,double m,double e,double c); //设置学⽣信息函数 double Ave_Stu(); //计算并返回学⽣平均成绩函数private:int num;string name;double math,english,cprogram;};//student.cpp 学⽣信息的源⽂件#include"student.h"void Student::Input_Stu()cout<<"请输⼊学⽣的学号、姓名、数学、英语、C++的成绩:"<>num>>name>>math>>english>>cprogram;}void Student::Show_Stu(){cout<<"********Student Info********"<cout<<"num="<cout<<"name="<cout<<"math="<cout<<"english="<cout<<"cprogram="<}void Student::Set(int n,string nm,double m,double e,double c)math=m; english=e; cprogram=c;}double Student::Ave_Stu(){return (math+english+cprogram)/3;}//main.cpp 主函数所对应的源⽂件#include"student.h"int main(){Student s1;s1.Input_Stu ();s1.Show_Stu ();cout<<"Average Score="<cout<s1.Set(2001,"Tom",70,80,90);s1.Show_Stu ();cout<3、程序代码:#include#includeusing namespace std;class Book{public:void Input(); //图书信息输⼊;void Output(); //图书信息输出;void Borrow(); //借阅图书,并显⽰当前剩余图书数量;void Restore(); //归还图书,并显⽰当前剩余图书数量。

《类与对象》课后习题(含答案)

《类与对象》课后习题(含答案)

问题一:程序执行结果是
问题二:本程序中,y、z 是 class Test{ public: static int Data; }; int Test::Data=100; //A void main(void) { Test t1,t2; t1.Data=200; t2.Data=300; //B //C
2、写出程序的输出结果。 #include <iostream> #include <cstring> using namespace std; class SomeClass { int One , Two; public: SomeClass(int a = 1, int b = 1) { One = a; Two = b; cout << "Structor" << endl; } SomeClass(SomeClass &obj) { { cout<<NumA<<'\t'<<"is Destructor."<<endl; } }; int main() { MyTestClass Myclass1(5), Myclass2.Print(); return 0; } 程序的运行结果为: Myclass2(Myclass1);
,第二行是
A.show( ); } 15 10 三、程序填空题
B.show( );
1、完成如下的类,在横线中填写合适的内容。 #include <iostream> #include <cstring> using namespace std; enum Esex{mid , man , woman};//枚举请自学 2.7 class Person { int Num; //编号 char Name[12]; //姓名 Esex Sex; //性别 float Weight; //体重 public: Person(int , char * , Esex , float); Person(); ~Person() {} void PrintInfo(); int Workdays(); }; Person::Person( { Num = id; int id ,char *name , Esex s , float w)

c++实验答案版

c++实验答案版
3员函数可以在类体内部定义,默认为____inline_____函数;若在外部定义,却省为非内联函数,要想声明为内联函数则需在定义前加inline。
④如行B所示,成员函数在内外定义时,在函数名前必须加上___类名和作用域运算符’::’_____。
⑤行C中如何用this指针表示name成员?____this->name____。
(2)类的默认访问权限为____私有/private____,结构体的默认访问权限为____公有____。(公有/私有)
课前练习题
1.类中定义的成员,其隐含访问权限为___B_____。
A.public B. private C.protected D. static
2.结构中定义的成员,其隐含访问权限为___A_____。
{
int temp=0;
char *p=s;
while(*p){ temp++; p++; }//行B
return temp;
}
void removeChar(int position)
{
if(position>=0 && position<=getLength()-1)
{
for(int i=position;i<getLength()-1;i++)//行C
void print():输出n及sq的值。
(3)在主函数中对该类进行测试。
定义实型变量m和类SQRT的对象s。
给m赋值。
调用对象s的set成员函数,设置s的数据成员n为m的值。
调用对象s的calc成员函数,计算n的近似平方根。
调用对象s的print成员函数,输出n及对应的平方根。

C++语言程序设计实验答案-类与对象

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实验五类与对象.doc

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面向对象程序设计的过程中,习题答案是非常重要的一部分。

通过练习习题,可以加深对知识点的理解,提高编程能力。

下面我们就来看一些常见的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面向对象程序设计习题及其答案。

c 实验报告 类和对象

c 实验报告 类和对象

c 实验报告类和对象C 实验报告类和对象引言:在计算机科学领域中,面向对象编程(Object-Oriented Programming,简称OOP)是一种常用的编程范式。

它将现实世界中的事物抽象成对象,并通过类来定义对象的属性和行为。

本实验报告将介绍C语言中的类和对象的概念,以及如何在C语言中实现面向对象编程。

一、类和对象的概念1.1 类的定义在面向对象编程中,类是一种用户自定义的数据类型,它由属性和方法组成。

属性是类的成员变量,用于描述对象的状态;方法是类的成员函数,用于描述对象的行为。

类是对象的模板,通过实例化类可以创建多个具有相同属性和方法的对象。

1.2 对象的定义对象是类的实例,它是类中属性和方法的具体表现。

每个对象都有自己的属性值,可以调用类中定义的方法来执行特定的操作。

通过对象,我们可以访问和修改类中的属性,以及调用类中的方法。

二、类和对象的实现2.1 结构体的应用在C语言中,我们可以使用结构体来实现类的属性。

结构体是一种自定义的数据类型,可以包含多个不同类型的成员变量。

通过定义结构体,我们可以将多个属性组合在一起,形成一个完整的数据结构。

2.2 函数的应用在C语言中,我们可以使用函数来实现类的方法。

函数是一段可重复使用的代码,可以完成特定的任务。

通过定义函数,我们可以将一系列操作封装起来,供对象调用。

三、面向对象编程的优势3.1 封装性面向对象编程中的封装性使得对象的内部细节对外部是隐藏的,只有通过对象提供的接口才能访问和修改对象的属性。

这样可以保护对象的数据不被非法访问和修改,提高了程序的安全性。

3.2 继承性通过继承,一个类可以从另一个类中继承属性和方法。

这样可以减少代码的重复性,提高代码的复用性。

同时,继承也使得类与类之间的关系更加清晰,便于代码的维护和扩展。

3.3 多态性多态性是面向对象编程的一个重要特性,它使得一个对象可以以多种形态存在。

通过多态性,我们可以通过基类的指针或引用来操作派生类的对象,实现代码的灵活性和扩展性。

c++实验二 类和对象(附答案)

c++实验二 类和对象(附答案)

实验二类和对象一、实验目的1、理解类和对象的概念。

2、掌握类的定义和使用方法。

二、实验内容以下是一个采用类结构的方式求n! 的程序,请填空完成程序。

# include <iostream.h>class factorial{int n;int fact;public:factorial(int); //带参的构造函数void calculate();void display();};factorial:: factorial(int val){n=val;(1)}void factorial::calculate(){int i=n;while(i>1)(2)or (3)}void factorial::display(){cout<<n<<"!="<< (4) <<endl;}void main(){int n;cout<<"请输入n的值: ";cin>>n;factorial A(n);A.calculate();(5)}要求:编译调试运行程序,得到正确结果。

在填空处加上注释。

设计题给出类的定义,构造一个完整的程序。

程序输出如下结果:a-b=c的值程序的主函数为:Int main(){ int a,b;cin>>a>>b;Ctest c;c.init(a,b);c.print();return 0;}//以下内容作为作业,做到作业本上。

3. 程序填空。

(测试静态成员的使用方法)(本科班必做!)#include<iostream>using namespace std;class Test{private;Static int count;public;Test() {count++;}static void Show() {cout<<”共有”<<count<<”个对象!”<<endl;}}(1) ;int main(void){Test obj1,obj2,obj3;(2);system(“PAUSE”);restuen 0;}4. 改正下面程序中的错误,使其正常运行。

C.语言程序设计实验答案_类及对象

C.语言程序设计实验答案_类及对象

实验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 声明一个简单的puter类。

有数据成员芯片(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的对象,调用其成员函数,观察类对象的构造与析构顺序,以及成员函数的调用。

C++ 实验二 类与对象(附答案)

C++ 实验二 类与对象(附答案)

象(附答案)象(附答案)实验二类与对象实验目的和要求1.掌握类、类的数据成员、类的成员函数的定义方式。

2.理解类成员的访问控制方式。

3.掌握对象的定义和操作对象的方法。

4.理解构造函数和析构函数的定义与执行过程。

5.掌握重载构造函数的方法。

6.了解拷贝构造函数的定义方法。

实验内容1.下面程序中有错,在不删除和增加代码行的情况下,改正错误语句,使其正确运行。

#include<iostream.h>class Aa{public:Aa(int i=0){a=i;cout<<"Constructor "<<a<<endl;}~Aa(){cout<<"Destructor "<<a<<endl;}void print(){cout<<a<<endl;}private:int a;};int main(){Aa al(1),a2(2);al.print();cout<<a2.a<<endl;return 0;}2.检查下面的程序,找出其中的错误,并改正。

然后上机调试,使程序能正常运行。

(1)#include<iostream.h>class Date{void set_date();void show_date();int year;int month;int day;};Date d;int main(){set_date();show_date();}void set_date(){cin>>d.year;cin>>d.month;cin>>d.day;}void show_date(){cout<<d.year<<'/'<<d.month<<'/'<<d.day<<endl; }(2)#include<iostream.h>class A{public:void A(int i=0){m=i;}void show(){cout<<m<<endl;}void ~A(){}private:int m;};int main(){A a(5);a.m+=10;a.show();return 0;}(3)#include<iostream.h>class X{private:int a=0;int &b;void setA(int i){a=i;}X(int i){a=i;}public:int X(){a=b=0;}X(int i,int j){a=i;b=j;}void setC(int k){c=c+k;}};void main(){X x1;X x2(2);X x3(1,2);x1.setA(3);}3.调试下列程序。

类和对象实验报告c

类和对象实验报告c

类和对象实验报告c类和对象实验报告引言在计算机科学领域,类和对象是面向对象编程的核心概念。

类是一种抽象数据类型,用于描述对象的属性和行为。

对象是类的实例化,具有特定的属性和行为。

本实验旨在通过编写一个简单的类和对象的示例程序,深入理解类和对象的概念以及它们在程序设计中的应用。

实验过程1. 类的定义首先,我们需要定义一个类。

在这个示例程序中,我们选择创建一个名为"Person"的类。

这个类将代表一个人,具有姓名和年龄两个属性。

类的定义通常包括属性和方法两个部分。

2. 属性的定义在"Person"类中,我们需要定义两个属性:姓名和年龄。

属性可以是不同的数据类型,比如字符串、整数等。

在这个示例中,我们选择使用字符串类型来表示姓名,使用整数类型来表示年龄。

属性的定义通常包括访问修饰符、数据类型和属性名称。

3. 方法的定义除了属性,类还可以定义方法。

方法是类的行为,用于执行特定的操作。

在"Person"类中,我们选择定义一个"introduce"方法,用于介绍这个人的姓名和年龄。

方法的定义通常包括访问修饰符、返回类型、方法名称和参数列表。

4. 对象的创建一旦类定义完成,我们可以创建类的对象。

在这个示例中,我们可以创建一个名为"person1"的对象,代表一个具体的人。

对象的创建通常包括使用"new"关键字和调用类的构造函数。

5. 对象属性的访问和修改通过对象,我们可以访问和修改类的属性。

在这个示例中,我们可以通过""和"person1.age"来访问和修改"person1"对象的姓名和年龄。

6. 对象方法的调用通过对象,我们还可以调用类的方法。

在这个示例中,我们可以通过"person1.introduce()"来调用"person1"对象的"introduce"方法,从而介绍这个人的姓名和年龄。

C++程序设计与应用基础第二章 类和对象习题答案

C++程序设计与应用基础第二章 类和对象习题答案

C++程序设计与应用基础第二章类和对象习题答案1、请完成下列填空题1)在C语言中,编程的单位是___函数__:在C++语言中,编程的单位是____类__。

2)在下面程序的横线处填上适当的语句,使类型该程序执行结果为10。

#include <iostream.h>class MyClass{pub1ic:——MyClass(int a){x=a;}//为x置值——int GetNum(){return x;} //取x值private:int x;};void main(){Myclass my(10);Cout<<my.GetNum()<<end;}3)在类中定义和实现的函数称为__内联函数_______。

4)对类中的成员函数和属性的访问是通过___public___、___protected___和___private___这3个关键字来控制的。

5) ___new___运算符对指定类型对象动态分配内存并返回该类型的__指针___。

6)假定用户没有给一个名为MyClass的类定义构造函数,则系统对其定义的默认构造函数形式为___MyClass()_____。

2、编程题1)定义一个复数类imaginary。

用友元函数实现该类的加、减、乘和除运算。

答案:class Imaginary{public:Imaginary(float a,float b);friend Imaginary Add(Imaginary& img1,Imaginary& img2);friend Imaginary Sub(Imaginary& img1,Imaginary& img2);friend Imaginary Mul(Imaginary& img1,Imaginary& img2);friend Imaginary Div(Imaginary& img1,Imaginary& img2);private:float x,y;};Imaginary::Imaginary(float a,float b){x=a;y=b;}Imaginary Add(Imaginary& img1,Imaginary& img2) {float a,b;a=img1.x+img2.x;b=img1.y+img2.y;return Imaginary(a,b);}Imaginary Sub(Imaginary& img1,Imaginary& img2) {float a,b;a=img1.x-img2.x;b=img1.y-img2.y;return Imaginary(a,b);}Imaginary Mul(Imaginary& img1,Imaginary& img2) {float a,b;a=img1.x*img2.x-img1.y*img2.y;b=img1.x*img2.y+img1.y*img2.x;return Imaginary(a,b);}Imaginary Div(Imaginary& img1,Imaginary& img2) {float a,b;if((img2.x*img2.x+img2.y*img2.y)!=0){a=(img1.x*img2.x+img1.y*img2.y)/(img2.x*img2.x+img2.y*img2.y); b=(img1.y*img2.x-img1.x*img2.y)/(img2.x*img2.x+img2.y*img2.y); return Imaginary(a,b);}elsereturn Imaginary(0.0,0.0);}2)定义类Rational。

C++面向对象程序设计实验三 类和对象

C++面向对象程序设计实验三 类和对象

学长只能帮你到这了
要想学习好,努力少不了
int y; }; void main() { CPoint p; p.print(); CPoint p1(1,2); //构造函数不能显示调用 p1.print(); //即 CPoint p1;p1.CPoint(1,2); CPoint p2=p1; //运行时会出错。 p2.print(); }
学长只能帮你到这了
要想学习好,努力少不了
{ CPoint pt; pt.Set(10,20); pt.Print(); }
问题一:以上程序编译能通过吗,试解释该程序? 答:可以通过, 问题二:以上程序的运行结构是否正确,如果不正确,试分析为什么,应该如何改正? 共有变量与私有变量名一样,调用的时候调用了私有变量,而私有变量没有值所以是
学长只能帮你到这了
要想学习好,努力少不了
ps.Print(); }
问题一:以上程序存在三处大错误,在不改变主函数内容的前提下,试改正该程序。 答:把成员函数都改成公有;函数的参数应该有数组或字符串的定义才可以传递“张三” 。 主函数中对构造函数的引用也有错。 class CPerson{ public: void Print(); CPerson(int ,char s[10]); private: int age; char *name; }; CPerson::CPerson(int a,char s[10]) { age=a; name=s; } void CPerson::Print() { cout<<"name="<<name<<",age="<<age<<endl; } void main() { CPerson ps(23,"张三"); ps.Print();

C实验2类和对象(1)

C实验2类和对象(1)

实验2 类和对象(1)班级学号姓名成绩一、实验目的1.掌握类的概念、类的定义格式、类与结构的关系、类的成员属性和类的封装性;2.掌握类对象的定义,对象的初始化;3.理解类的成员的访问控制的含义,公有、私有和保护成员的区别;4.掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。

能够根据给定的要求定义类并实现类的成员函数;二、实验内容1.分析找出以下程序中的错误,说明错误原因,给出修改方案使之能正确运行。

#include<iostream.h>class one{ int a1,a2;public:one(int x1=0, x2=0);};void main(){one data(2,3);cout<<data.a1<<endl;cout<<data.a2<<endl;}2.分析以下程序的错误原因,给出修改方案使之能正确运行。

#include <iostream.h>class Amplifier{float invol,outvol;public:Amplifier(float vin,float vout){invol=vin;outvol=vout;}float gain();};Amplifier::float gain() { return outvol/invol; }void main(){ Amplifier amp(5.0,10.0);cout<<"\n\nThe gain is =>"<<gain()<<endl;}3.定义盒子Box类,要求具有以下成员:可设置盒子形状;可计算盒子体积;可计算盒子的表面积。

4.定义计数器类Counter。

要求具有以下成员:计数器值;可进行增值和减值记数;可提供记数值。

5.编写一个程序计算两个给定的长方形的周长和面积。

《C++程序设计》习题解答

《C++程序设计》习题解答

《C++程序设计》习题解答第七章类与对象1.填空题(1)在C++中,类成员有3种访问权限,它们分别是___________、___________和___________。

其中_________提供给用户的接口功能;_________用来描述对象的属性。

(2)类中有一种特殊的成员函数,它主要用来为对象分配内存空间,对类的数据成员进行初始化,这种成员函数是___________。

(3)析构函数的作用是___________。

(4)类是对象的___________,而对象是类的具体___________。

(5)如果在类中没有明确定义析构函数,清除对象的工作仍由___________来完成,原因是___________。

(6)如果想将类的一般成员函数说明为类的常成员函数,则应该使用关键字___________说明成员函数。

(7)当一个类的对象成员函数被调用时,该成员函数的___________指向调用它的对象。

(8)被声明为const的数据成员只允许声明为___________的成员函数访问。

(9)一个类中若包含另一个类的对象,则这种情况称为类的___________,这个对象称为___________。

(10)若外界函数想直接访问类的私有数据成员,则必须把该函数声明为类的___________。

(11)一个类A若声明为另一个类B的友元类,则意味着类A中的所有成员函数都是类B的___________。

(12)将类中的数据成员声明为static的目的是___________。

(13)类的静态数据成员的初始化工作要放在___________。

(14)若有以下程序结构,该程序运行时调用了___________次构造函数,调用了___________次析构函数。

class Box{……};void main(){Box A,B,C;}(15)下列程序的执行结果是___________。

#includeclass A{int a;double b;public:A(int x=100,double y=1.2){a=x;b=y;}void show(char *pt){cout<<pt<<":"<<endl;< bdsfid="95" p=""></pt<<":"<<endl;<>cout<<"a="<<a<<endl;< bdsfid="97" p=""></a<<endl;<> cout<<"b="<<b<<endl;< bdsfid="99" p=""></b<<endl;<> }};void main(){A obj1,obj2(100,3.5);obj1.show("obj1");obj2.show("obj2");A *p;p=&obj1;p->show("p->obj1");(*p).show("(*p)obj1");p=&obj2;p->show("p->obj2");(*p).show("(*p)obj2");p=new A;p->show("p->new");delete p;}(16)分析下列程序的输出结果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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函数中应包含一条输出语句,给出相关的信息;
每个类中至少包括:数据成员、构造函数、析构函数、取值成员函数、赋值成员函数。

★程序及运行结果:
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位数字,第一位为1
char sex;//性别,m为男,w为女
Date birthday;//出生日期
unsigned id;//身份证号,8位数字,第一位不为0
参考程序运行结果:
★程序及运行结果:
// lab4_4.cpp
#include<iostream>
using namespace std;
class Date{
private:
int yy,mm,dd;
public:
Date(){ }
~Date(){ }。

相关文档
最新文档