类与对象作业1_2012_参考答案
第3章-类和对象习题-参考答案.doc
第3章类与对象习题参考答案一、选择题(共30分,每题1分)12345678910 c B C D D B D A D C 11121314151617181920 A C B A A D B C C D 21222324252627282930 C D B B A D B B A A二、填空题(共18分,每题1分)1.不能2.将对象A复制给对象B3.(1) public (2)成员函数4.实例5.复制(拷贝)6.类(test ) 〜test。
7.对象类8.重载返回值参数9.默认(无参)10.->11.构造函数12.函数返回类型类名::成员函数名(参数表);13.常对象14.对象名15.析构函数三、改错题(共12分,每题2分)1.void Point(int a) ------------ Point(int a)cout«A.Show(); ------------ A.Show();2.答案:inti,intj ------------- int i, intj=O 〃注:只要有一个int类型的数据就行。
分析:调用时,既有一个参数,也有两个参数,旦没有重载,所以参数需要带默认值。
3.答案:swap(&a,&b); ----------- s wap(a? b);分析函数的形参是变量的引用,调用时的实参应该是地址。
4.#include<iostream.h>class one{ int al,a2;public:one(int xl=O, int x2=0) 〃修改1:构造函数的函数体没有(al=xl;a2=x2;)show() 〃修改2定义成员函数(cout«al«endl;cout«a2«endl;)};void main(){ one data(2,3);data.show(); 〃修改3:用对象调用成员函数}5.ABC(int aa)a(aa)(} --------- ABC(int aa): a(aa)()分析:构造函数的初始化列表格式错误。
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++类与对象习题及解答
类与对象习题 1类与对象习题一. 基本概念与基础知识自测题4.1 填空题5.1.1 引入类定义的关键字是。
类的成员函数通常指定为,类的数据成员通常指定为(3)。
指定为(4)的类成员可以在类对象所在域中的任何位置访问它们。
通常用类的(5)成员表示类的属性,用类的(6)成员表示类的操作。
答案:(1) class(2)公有的public(3)私有的private(4)公有的public(5)数据(6)函数4.1.2 类的访问限定符包括(1)、(2)和(3)。
私有数据通常由(4)函数来访问(读和写)。
这些函数统称为(5)。
答案:(1) public(公有的)(2) private(私有的)(3) protected(保护的)(4)公有的成员函数(5)类的接口4.1.3 通常在逻辑上,同一类的每个对象都有在物理上通常只有(2)代码区。
只有在(3)定义,并(4)的函数和加了关键字(5)的函数例外。
答案:(1)独立的(2)共用的(3)在类说明中(4)不包括循环等复杂结构(5) inline4.1.4 C++中支持三种域:、(4)中,全局域被包括在(5)中。
using指示符以关键字using开头,后面是关键字(6),最后是(7)。
这样表示以后在该名字空间中所有成员都(8)。
如不使用using指示符则在使用时要加::,称为(9)运算符。
答案:(1)局部域(local scope)(2)名字空间域(namespace scope)(3)类域(class scope)(4)局部域(5)名字空间域(6) namespace(7)名字空间名。
第3章 类与对象习题 参考答案
第3章类与对象习题参考答案一、选择题(共30分,每题1分)二、填空题(共18分,每题1分)1. 不能2. 将对象A复制给对象B3. (1) public (2) 成员函数4. 实例5. 复制(拷贝)6. 类(test )~test()7. 对象类8. 重载返回值参数9.默认(无参)10. ->11. 构造函数12.函数返回类型类名::成员函数名(参数表);13. 常对象14. 对象名15. 析构函数三、改错题(共12分,每题2分)1. void Point(int a)------------Point(int a)cout<<A.Show();----------- A.Show();2. 答案:int i, int j-----------int i, int j=0 //注:只要有一个int类型的数据就行。
分析:调用时,既有一个参数,也有两个参数,且没有重载,所以参数需要带默认值。
3. 答案:swap(&a,&b); ------------swap(a, b);分析函数的形参是变量的引用,调用时的实参应该是地址。
4. #include<iostream.h>class one{ int a1,a2;public:one(int x1=0, int x2=0) //修改1:构造函数的函数体没有{a1=x1;a2=x2;}show() //修改2 定义成员函数{cout<<a1<<endl;cout<<a2<<endl;}};void main(){ one data(2,3);data.show(); //修改3:用对象调用成员函数}5. ABC(int aa)a(aa){} ------------ABC(int aa):a(aa){}分析:构造函数的初始化列表格式错误。
6. 答案:cout<<t1.getmin()<<endl; -----------cout<<t1.GetMin()<<endl;分析:采用默认的访问权限即私有的,在外部无法访问。
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,用来输出提示信息,在构造函数和析构函数中也可以输出提示顺序。
类和对象
A. 数据的规范化 B. 便于数据转换
C. 避免数据丢失 D. 防止不同模块之间数据的非法访问
43 对类的构造函数和析构函数描述正确的是( A )
A. 构造函数可以重载,析构函数不能重载
B. 构造函数不能重载,析构函数可以重载
A.构造函数可以设置默认的参数 B.构造函数在定义类对象的自动执行
C.构造函数可以是内联函数 D.构造函数不可以重载
23 如果类A被说明成类B的友元,则( d )。
A.类A的成员即类B的成员。
B.类B的成员即类A的成员。
C.类A的成员函数不得访问类B的成员 。
A. 一个类可以有多个析构函数 B. 析构函数与类名完全相同
C. 析构函数不能指定返回类型 D. 析构函数可以有一个或多个参数
4 构造函数是在( b)时被执行的。
A. 程序编译 B. 创建对象 C. 创建类 D. 程序装入内存
9 下列存储类标识符中,要求通过函数来实现一种不太复杂的功能,并且要求加快执行速度,选用( a )合适。
A. 内联函数; B. 重载函数; C. 递归调用; D. 嵌套调用。
10 C++对C语言作了很多改进,下列描述中(d )使得C语言发生了质变,从面向过程变成了面向对象。
(A)14 (B)15 (C)16 (D)17
38 ( A )只能访问静态成员变量
(A)静态成员函数 (B)虚函数 (C)构造函数 (D)析构函数
39 面向对象程序设计中的数据隐藏指的是 d
A.输入数据必须输入保密口令
B.数据经过加密处理
34 下列关于this指针的正确选项是( c )
DYc++类与对象习题答案
1.概念填空题1.1 类定义的关键字是class。
类的数据成员通常指定为私有成员。
类的函数成员通常指定为公有成员,指定为公有的类成员可以在类对象所在域中的任何位置访问它们,类的私有和保护只能被该类的成员函数或友元函数访问。
1.2类的访问限定符包括public、private和protected。
类成员默认的访问方式是private。
访问限定符在类中无先后次序,各限定符允许(允许/不允许)多次出现。
1.3 构造函数的任务是建立对象。
类中可以有多个构造函数,它们由参数区分。
如果类说明中没有给出构造函数,则C++编译器会提供构造函数,该函数不完成(完成/不完成)对象初始化工作。
1.4复制构造函数的参数是对象的复制,当程序没有给出复制构造函数时,编译系统会提供默认复制构造函数,完成类对象的复制。
复制构造函数被调用情况有 3 种。
1.5析构函数在对象释放时被自动调用。
类中没有定义析构函数时,编译系统会提供一个默认的析构函数。
该函数不完成(完成/不完成)具体对象的清理工作。
2. 简答题2.1 为什么说类与对象的概念是客观世界的反映?答:客观世界的事物都具有某些属性和行为(或操作),具有相同属性和行为的事物可以归属于一类,用分类的方法可以提高认识事物的效率。
C++中定义的类则是通过抽象的方法将某一类事物共有的静态特征(属性)和动态特征(行为)概括出来并加以描述,而对象是类的具体实现,所以说类与对象的概念是客观世界的反映。
2.2 简单解释什么是面向对象程序设计的封装性。
答:对象是一个封装体,在其中封装了该对象所具有的属性和操作。
对象作为独立的基本单元,实现了将数据和数据处理相结合的思想。
此外,封装特性还体现在可以限制对象中数据和操作的访问权限,从而将属性“隐藏”在对象内部,对外只呈现一定的外部特性和功能。
封装性增加了对象的独立性,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++ 实验二 类与对象(附答案)
象(附答案)象(附答案)实验二类与对象实验目的和要求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.调试下列程序。
第7章 类和对象 习题解答
public公有成员,既可以被本类中的成员函数所引用,也可以被类作用域外的其他函数引用。
protectd保护成员,不能被类外访问(与私有成员类似),但可以被派生类的成员函数访问。
关于私有、公有和保护的概念,例如:一个家庭的住宅,客厅一般是允许客人进入的(公有的),而卧室只允许家庭成员进入(私有的),祖传的珍宝则只能由家庭成员继承(保护的),一般不会外传。
类(class):类是对象的抽象,如可以把中国人、美国人、日本人等所有国家的人抽象为“人”类,再如,凡是有轮子、能滚动前进的陆地交通工具统称为“车”。抽象的过程就是将有关事物的共性归纳、集中的过程。
因此,类是对象的抽象,而对象则是类的特例或是类的具体表现。
温馨提醒:类是抽象的,不占用内存,而对象是具体的,占用存储空间。
}
};
如果在类的声明之外定义成员函数时,必须在函数名前面加上类名和作用域运算符“::”,予以限定。例如,若上面的display( )成员函数放在类声明之外定义,则应写成:
voidCRect::display(){//函数表明对数据的具体操作
cout<<"Circle="<<2*(right-left) + 2*(bottom-top)<<'\n';
温馨提醒:(1)类体声明中如果没有说明成员的属性,则默认为private;
(2)成员函数可以访问本类中的任何成员(包括私有、公有和保护的成员);
(3)成员函数与普通函数一样可以重载。
7.3.4类与结构体的对比
类与结构体的共同点:类的成员可以是成员数据,也可以是成员函数。同样经过C++功能的扩展后,结构体中也可以有成员数据和成员函数的存在。类中成员的定义可以有public,private,protected访问权限控制,同样在结构体定义中也可以有这些控制说明。
实验5类和对象1答案
实验5: Java类与对象一、实验目的(1)使用类来封装对象的属性和功能;(2)掌握Java类的定义。
(3)java对象的使用二、实验任务(1)按要求编写一个Java程序。
(2)按要求完善一个Java程序,编译、运行这个程序,并写出运行结果。
三、实验内容1. 编写一个Java程序片断,以定义一个表示学生的类Studen。
这个类的属性有“学号”、“班号”、“姓名”、“性别”、“年龄”,方法有“获得学号”、“获得班号”、“获得性别”、“获得姓名”、“获得年龄”、“获得年龄” 02. 为类Student增加一个方法public String toString(),该方法把Student类的对象的所有属性信息组合成一个字符串以便输出显示。
编写一个Java Application程序,创建Student类的对象,并验证新增加的功能。
class Stude nt{long stude ntID;int classID;Stri ng n ame;Stri ng sex;int age;public Stude nt(l ong stude ntlD,i nt classlD,Stri ng n ame,Stri ng sex,i nt age){ this.stude ntID=stude ntID;this.classlD=classlD;this .n ame=n ame;this.sex=sex; this.age=age;}public long getStudentID(){return stude ntID;}public in t getClasslD(){return classID;}public String getName(){return name;}public String getSex(){return sex;}public int getAge(){return age;}public String toString(){return "学号:"+getStudentID()+"\n 班号:"+getClassID()+"\n 姓名:"+getName()+"\n 性别:"+getSex()+"\n 年龄:"+getAge();}}public class StudentDemo{public static void main(String[] args){Student s1=new Student(90221,2,"Tom","male",20);System.out.println(s1.toString());}}运行结果:学号:90221班号:2 姓名:Tom 性别:male年龄:202.程序填空,程序中包含以下内容:一个学生类(Student) 包含:属性:学号s_No,姓名s_Name性别s_Sex年龄s_Aga方法:构造方法,显示学号方法showNo(),显示姓名方法showName(),显示性别方法showSex()显示年龄方法showAge()修改年龄方法modifyAge()o 主类(X2),包含:主方法main(),在其中创建两个学生对象si和s2并初始化,第一个对象的属性为(101,"张三"," 男",18),第二个对象的属性值为( 1 02,"李四","女",1 6) ,然后分别显示这两个学生的学号、姓名、性别、年龄,然后修改s1 的年龄并显示修改后的结果。
类和对象习题答案
课后练习答案
实践5: 答案:一般而言,如果一个类需要定义复制构造函数,则
该类也需要定义赋值操作符。具体而言,如果一个类 中包含指针型数据成员,或者在进行赋值操作时有一 些特定工作要做,则该类通常需要定义赋值操作符
课后练习答案
实践6: 答案:一般而言,如果一个类拥有指针成员,或者在进行
赋值操作时有一些特定工作要做,则该类需要赋值操 作符。 (a)Point3w类不需要赋值操作符。因为Point3w类中的数 据成员都是内置类型的,没有指针成员,使用编译器 提供的赋值操作符即可。 (b)Matrix类需要赋值操作符。因为需要涉及指针及内存的 动态分配 (c)Payroll类需要赋值操作符。因为在用已存在的Payroll 对象给另一个Payroll对象赋值时,需要提供唯一的ID.
课后练习答案
实践4:
答案:上述定义之所以不能工作,是因为它试图 以传值(pass-by-value)方式将实参传递给一个 复制构造函数。但是,每当以传值方式传递 参数时,会导致调用复制构造函数,因此, 如果要使用以传值方式传递参数的复制构造 函数,必须使用一个“不以传值方式传递参 数“的复制构造函数,否则,就会导致复制 构造函数的无穷递归调用。所以,复制构造 函数的形参必须是一个引用,即以传址(passby-reference)方式传递参数。
课后练习答案
实践2答案:
上述程序段中使用了复制构造函数的地方包括(见下面程序段中的注 释):
Point global; Point foo_bar(Point arg)//调用foo_bar函数时将实参Point对象的副本
//传递给形参Point对象arg {
Point local = arg;//对局部Point对象local进行复制初始化 Point *heap = new Point(global);//根据全局Point对象global创建 新的Point对象 *heap = local; Point pa[ 4 ] = { local, *heap };//根据元素初始化式列表初始化数 组pa的元素 return *heap;//从函数返回Point对象*heap的副本 }
实验11 类与对1答案
实验11 类与对象【实验目的】掌握类的创建、成员变量的设置及引用,成员方法的设置及引用。
掌握类与对象的区别,对象的创建复习数组【实验内容】实验一:class CCircle {double pi; double radius;double getRadius(){return radius;}void setCircle(double r, double p){ pi=p;radius=r; }}public class Ex4_1{public static void main(String args[]){CCircle cir1=new CCircle(); cir1.setCircle(2.0,3.1416);System.out.println("radius="+cir1.getRadius()); }}阅读以上程序,分析每一条语句的作用,并概括程序的作用,最后写出程序的运行结果。
注意:要大家做这个实验的目的是了解自定义类的使用,希望同学们能做到一丝不苟的理解。
实验二:编程正确引用String类的charAt、codePointAt、codePointBefore、concat、endsWith、equals、equalsIgnoreCase、compareTo、length、replace方法,正确理解这些方法的意义,并给出说明。
结合方法头,总结类方法引用的规律。
注意:此实验大家一定要认真做,我们下次课堂会讲在自定义类中如何定义方法,只有了解并掌握了方法的使用,你才能更加透彻的理解你需要在某个类中定义什么样的方法,希望大家认真来做这次实验。
实验三:声明一个圆类,该类包括半径成员变量。
实验四:输出杨辉三角的前10行。
杨辉三角(也称帕斯卡三角)是一个数列,可以表示二次项展开式(x+y)n的各项系数。
形如下图。
注意:所有数存入数组,用数组来实现。
11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 1public class yp1 {public static void main(String args[]){int[][]a={{1},{1,1},{1,2,1},{1,3,3,1},{1,4,6,4,1},{1,5,10,10,5,1},{1,6,15,2 0,15,6,1}};int i,j;for(i=0;i<a.length;i++){for(j=0;j<a[i].length;j++)System.out.print(a[i][j]+" ");System.out.println();}}}实验五:矩阵转置。
类与对象作业1_2012_参考答案
类与对象作业1_2012_参考答案1.类的定义类的成员包括–数据成员与成员函数类定义的三种形式–声明与实现不分离,写在{}内–声明与实现分离,放在同⼀个⽂件中–声明与实现分离,放在两个⽂件中类声明:放在头⽂件中,命名:类名.h,包含:–数据成员的定义–成员函数的原型说明语句类实现:放在源程序⽂件中,命名:类名.cpp,包含:–成员函数的定义:要在每个成员函数的函数名前加:类名::–增加⽂件包含命令,包含类声明⽂件,如:#include”circle.h”2.类的使⽤编写main 函数–放在源程序⽂件中,命名:test.cpp–增加⽂件包含命令,包含类声明⽂件,如:#include”circle.h”–创建对象–测试各个成员函数,形式为对象名.公有成员函数名(实参表)类与对象1_2012_参考答案4-1.编写圆类Circle,包含:⼀个名为radius的double型数据成员,表⽰圆形的半径。
数据成员的获取函数getRadius和设置函数setRadius。
⼀个名为getArea()的函数,返回圆形的⾯积。
⼀个名为getPerimeter()的函数,返回圆形的周长编写⼀个测试程序,它创建2个Circle类对象,将第⼀个圆形的半径设置为2.5,第2个圆形的半径设置为3.5,并输出两个圆形对象的半径、⾯积和周长。
//以下为Circle类的声明部分:circle.hclass Circle{public:double getArea();double getPerimeter();double getRadius();void setRadius(double);private:double radius;};//以下为Circle类的实现部分: circle.cpp#include"circle.h"double Circle::getArea(){return 3.14*radius*radius;}double Circle::getPerimeter(){return 2*3.14*radius;}double Circle::getRadius(){return radius;}void Circle::setRadius(double r){radius=r;}//测试Circle类以下为test.cpp#include "circle.h"#includevoid main(){Circle a,b; //创建两个对象,对象名分别为a,b cout<<"radius="<cout<<"radius="<a.setRadius (2.5); //将a对象的radius成员设置为2.5b.setRadius (3.5); //将b的radius成员设置为3.5cout<cout<<"radius="<cout<<"area="<cout<<"perimeter="<cout<cout<<"radius="<cout<<"area="<cout<<"perimeter="<}4-2.编写圆柱体类Cylinder,包含:名为radius的double型数据成员,表⽰圆的半径,名为height的double型数据成员,表⽰⾼。
作业类与对象答案
作业类与对象答案作业一类与对象1 知识要点1.掌握类与对象的概念和定义方法,掌握类成员的访问属性。
2.掌握构造函数的概念、定义方法和使用方法。
3.掌握析构函数的概念、定义方法和使用方法。
4.掌握拷贝构造函数的概念、定义方法和使用方法。
2典型例题例题1:下列有关类的说法不正确的是()。
A.对象是类的一个实例B.任何一个对象只能属于一个具体的类C.一个类只能有一个对象D.类与对象的关系和数据类型与变量的关系相似答案:C分析:对象是类的一个实例,类与对象的关系和数据与变量的关系相似,所以一个类可以有多个对象。
例题2:下面()项是对构造函数和析构函数的正确定义。
A.void X::X(), void X::~X()B.X::X(参数), X::~X()C.X::X(参数), X::~X(参数)D.void X::X(参数), void X::~X(参数)答案:B分析构造函数无返回类型、可带参数、可重载;析构函数无返回类型、不可带参数、不可重载。
例题3:()的功能是对象进行初始化。
A.析构函数 B. 数据成员 C.构造函数 D.静态成员函数答案:C分析:当一个对象定义时,C++编译系统自动调用构造函数建立该对象并进行初始化;当一个对象的生命周期结束时,C++编译系统自动调用析构函数注销该对象并进行善后工作;例题4:下列表达方式正确的是()。
A.classP{ B. class P{public:public:intx=15;int x;void show(){cout<<x;}< p="">void show(){cout<<x;}< p="">};}C. classP{ D. class P{int f;public:};int a;f=25;void Seta (int x) {a=x;}};答案:D分析:在类体内不可对数据成员进行初始化;类定义结束时需用分号;只有类中的成员函数才能存取类中的私有数据。
C++语言程序设计实验答案_类与对象
C++语言程序设计实验答案_类与对象(总7页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--实验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,用来输出提示信息,在构造函数和析构函数中也可以输出提示顺序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
b.setRadius (3.5); //将b的radius成员设置为3.5
cout<<endl;
cout<<"radius="<<a.getRadius ()<<endl; //输出a对象的半径
cout<<"area="<<a.getArea ()<<endl; //输出a对象的面积
}
void Complex::getRI (double &r,double &i)
{
r=real;
i=imag;
}
void Complex::show ()
cout<<"perimeter="<<b.getPerimeter ()<<endl; //输出b对象的周长
}
4-2.编写圆柱体类Cylinder,包含:
名为radius的double型数据成员,表示圆的半径,名为height的double型数据成员,表示高。
单个数据成员的访问和更改函数{以及两个成员的访问和更改函数}
double a,b;
c.getHR (a,b);
cout<<a<<"\t"<<b<<endl;
cout<<c.getSurfaceArea ()<<endl;
cout<<c.getVolume ()<<endl;
Cylinder d;
d.setHR (3,2.5);
double x,y;
x=d.getHeight ();
{
radius=r;
}
void Cylinder::setHeight(double h)
{
height=h;
}
void Cylinder::setHR(double h,double r)
{
height=h;
radius=r;
}
double Cylinder::getSurfaceArea()
{
return 2*3.14*radius*radius+2*3.14*radius*height;
1.类的定义
•类的成员包括
–数据成员与成员函数
•类定义的三种形式
–声明与实现不分离,写在{}内
–声明与实现分离,放在同一个文件中
–声明与实现分离,放在两个文件中
•类声明:放在头文件中,命名:类名.h,包含:
–数据成员的定义
–成员函数的原型说明语句
•类实现:放在源程序文件中,命名:类名.cpp,包含:
void setHR(double,double);
double getSurfaceArea();
double getVolume();
private:
double radius,height;
};
//以下为Cylinder类的实现部分,cylinder.cpp
#include "Cylinder.h"
private:
double real,imag;
};
//以下为complex.cpp
#include "complex.h"
#include<math.h>
#include<iostream.h>
void Complex::setRI(double r,double i)
{
real=r;
imag=i;
}
double Circle::getPerimeter()
{
return 2*3.14*radius;
}
double Circle::getRadius()
{
return radius;
}
void Circle::setRadius(double r)
{
radius=r;
}
//测试Circle类以下为test.cpp
编写一个测试程序,它创建2个Rectangle对象,将第一个矩形的宽/高设置为10、10,第2个矩形的宽/高设置为3.5、5.9,并输出两个矩形对象的高、宽、面积和周长。
//以下为Rectangle类的声明部分,rectangle.h
class Rectangle
{
public:
double getArea();
单个数据成员的获取函数和设置函数以及对两个数据成员的同时获取的函数和同时设置的函数,各函数名为:getWidth, getHeight, setWidth, setHeight,setWH,getWH。
一个名为getArea()的函数,返回矩形的面积。
一个名为getPerimeter()的函数,返回矩形的周长。
private:
double width,height;
};
//以下为Rectangle类的实现部分,rectangle.cpp
#include"rectangle.h"
double Rectangle::getArea()
{
return width*height;
}
double Rectangle::getPerimeter()
cout<<"perimeter="<<a.getPerimeter ()<<endl; //输出a对象的周长
cout<<endl;
cout<<"radius="<<b.getRadius ()<<endl; //输出b对象的半径
cout<<"area="<<b.getArea ()<<endl;; //输出b对象的面积
}
double Cylinder::getVolume()
{
return 3.14*radius*radius*height;
}
//以下为test.cpp
#include"cylinder.h"
#include<iostream.h>
void main()
{
Cylinder c;
c.setHR (2.5,4);
•对象名.公有成员函数名(实参表)
类与对象1_2012_参考答案
4-1.编写圆类Circle,包含:
一个名为radius的double型数据成员,表示圆形的半径。
数据成员的获取函数getRadius和设置函数setRadius。
一个名为getArea()的函数,返回圆形的面积。
一个名为getPerimeter()的函数,返回圆形的周长
{
return 2*(width+height);
}
double Rectangle::getWidth()
{
return width;
}
double Rectangle::getHeight()
{
return height;
}
void Rectangle::setWidth(double w)
{
width=w;
b.setHeight(5.9); //设置b的高
cout<<endl<<"width="<<b.getWidth()<<",height="<<b.getHeight()<<endl;
cout<<"area="<<b.getArea()<<endl;
cout<<"perimeter="<<b.getPerimeter()<<endl;
y=d.getRadius ();
cout<<x<<"\t"<<y<<endl;
cout<<d.getSurfaceArea ()<<endl;
cout<<d.getVolume ()<<endl;
}
4-3.编写矩形类Rectangle,包含:
两个名为width和height的double型数据成员,分别表示矩形的宽和高。
double getPerimeter();
double getWidth();
double getHeight();
void getWH(double&,double&);
void setWidth(double);
void setHeight(double);
void setWH(double,double);
//以下为Cylinder的声明部分,cylinder.h
class Cylinder
{
public:
double getHeight();
double getRadius();
void getHR(double&h,double&r);
void setHeight(double);
void setRadius(double);
//以下为complex.h文件
class Complex
{
public:
void setRI(double=0,double=0);