C++面向对象程序设计双语教程(第3版)-参考答案 刘嘉敏 【ch04】 Advance of Classes and Objects一Further Definition of Class Members and Objects_第1页
C++面向对象程序设计双语教程(第3版)-参考答案 刘嘉敏 【ch04】 Advance of Classes and Objects一Further Definition of Class Members and Objects_第2页
C++面向对象程序设计双语教程(第3版)-参考答案 刘嘉敏 【ch04】 Advance of Classes and Objects一Further Definition of Class Members and Objects_第3页
C++面向对象程序设计双语教程(第3版)-参考答案 刘嘉敏 【ch04】 Advance of Classes and Objects一Further Definition of Class Members and Objects_第4页
C++面向对象程序设计双语教程(第3版)-参考答案 刘嘉敏 【ch04】 Advance of Classes and Objects一Further Definition of Class Members and Objects_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Chapter4AdvanceofClassesandObjects-FurtherDefinitionofClassMembersandObjects1.Markthefollowingstatementsastrue(T)orfalse(F)andgivereasons.(1)Assigninganobjecttoanobjectofthesametyperesultsindefaultmember-wisecopy.(2)Memberfunctionsdeclaredconstcannotmodifytheobject.(3)Anobjectcannotbedeclaredasconst.(4)Aclasscannothaveobjectsofotherclassesasmembers.(5)Ifamemberinitializerisnotprovidedforamemberobject,thememberobject'sdefaultconstructoriscalledimplicitly.(6)Staticmembersaresharedbyallinstancesofaclass.(7)Aclass'sstaticmemberexistsonlywhenanobjectoftheclassexists.(8)TheprimaryactivityinC++iscreatingobjectsfromtheabstractdatatypesandexpressingtheinteractionsbetweenthoseobjects.(9)Aclass'sfriendfunctioncanaccessallprivatedataoftheclass.(10)Aclass'sfriendfunctionisamemberoftheclass.(1)假(F)。将对象分配给相同类型的对象不会导致默认的成员副本,它只会将指针或引用从一个对象复制到另一个对象。(2)真(T)。声明为const的成员函数确实不能修改该对象。const成员函数被设计为不会修改对象的状态。(3)假(F)。一个对象可以被声明为const。当一个对象被声明为const时,它的状态将被视为只读,不允许修改。假(F)。一个类可以具有其他类的对象作为成员。这被称为对象组合,它允许一个类拥有其他类的对象作为其成员,以实现更复杂的行为。假(F)。如果没有为成员对象提供成初始化设定器,会调用成员对象的默认构造函数,但这个过程是在成员对象的成员初始化列表中完成的,而不是隐式地调用。真(T)。静态成员是属于整个类而不是某个类的实例,因此被该类的所有实例所共享。假(F)。类的静态成员在类的对象存在时是存在的,但即使没有类的对象存在,静态成员仍然存在。C++中的主要活动是建立和定义类,从而创建对象。通过这些对象来实现抽象数据类型和它们之间的交互作用。朋友函数可以访问该类的私有数据,但不一定可以访问所有私有数据。它只能访问被声明为友元的类的私有成员。朋友函数不是该类的成员函数,尽管它可以访问该类的私有成员。朋友函数是在类外部定义的普通函数,但在类的声明中声明为友元函数。可以通过类名直接访问。2.Findtheerror(s)ineachofthefollowingcodesandexplainpossiblecorections.略。3.Writeouttheoutputofthefollowingcodes:Ifthestatementvoidincrement(CountC,inttimes)ischangedtovoidincrement(Count&c,int×),whatwillbetheoutput?略。4.WriteaprogramthattheCubeclassisdefinedwiththepropertiesx,y,z,length,width,andheight.Theclassincludesthefollowingdefinition:(1)twoconstructors,acopyconstructorandadestructor;(2)amemberfunctiontocalculatethevolumeofCube;(3)amemberfunctiontodisplaytheproperties;(4)amemberfunctiontomoveaCube;(5)amemberfunctiontomodifythepropertiesofCube.TesttheCubeclassbyusingthemainfunction.```cpp#include<iostream>classCuboid{private:intx,y,z;intlength,width,height;public://构造函数Cuboid():x(0),y(0),z(0),length(0),width(0),height(0){}Cuboid(intx,inty,intz,intlength,intwidth,intheight):x(x),y(y),z(z),length(length),width(width),height(height){}//复制构造函数Cuboid(constCuboid&other):x(other.xy(other.y),z(other.z),length(other.length),width(other.width),height(other.height){}//析构函数~Cuboid(){}//计算魔方体积的成员函数intcalculateVolume()const{returnlength*width*height;}//显示属性voiddisplayProperties()const{std::cout<<\Position:(\<<x<<\\<<y<<\\<<z<<\<<std::endl;std::cout<<\Length:\<<length<<std::endl;std::cout<<\Width:\<<width<<std::endl;std::cout<<\Height:\<<height<<std::endl;}//使立方体移动的成员函数voidmove(intnewX,intnewY,intnewZ){x=newX;y=newY;z=newZ;}//修改多维数据集属性的成员函数voidmodifyDimensions(intnewLength,intnewWidth,intnewHeight){length=newLength;width=newWidth;height=newHeight;}};intmain(){//创建一个魔方体对象Cuboidcuboid(1,2,3,4,5,6);//显示属性cuboid.displayProperties();std::cout<<\Volume:\<<cuboid.calculateVolume()<<std::endl;//移动立方体cuboid.move(7,8,9);cuboid.displayProperties();//修改属性cuboid.modifyDimensions(10,11,12);cuboid.displayProperties();return0;}```这个程序定义了一个名为Cuboid的类,表示一个立方体。类中包含了所需的成员函数和数据成员来实现题目描述的功能。在主函数中,我们创建了一个Cuboid对象,并演示了如何使用各个成员函数来操作和显示立方体的属性。5.DefineaclasscalledEmployeethatcontainsaname(anobjectofthestringtype)andanemployeeID(longtype).Includeamemberfunctioncalledgetdatatogetdatafromtheuserforinsertionintotheobject,andanotherfunctioncalledputdatatodisplaythedata.Assumethenamehasnoembeddedblanks.Writeamainfunctiontoexecutethisclass.ItshouldcreateanarrayoftypeEmployee,andtheninvitetheusertoinputdataforupto100employees.Finally,itshouldprintoutthedataforalltheemployees.以下是定义一个名为`tley`的类,并包含名称(字符串型)和雇员ID(长型)字段的代码:```pythonclasstley:def__init__(self):=\self.employee_id=0defgetdata(self):=input(\请输入员工的名称:\self.employee_id=int(input(\请输入员工的ID:\defputdata(self):print(\员工名称:\)print(\员工ID:\self.employee_id)#主函数defmain():employees=[]n=int(input(\请输入员工数量:\foriinrange(n):emp=tley()emp.getdata()employees.append(emp)print(\所有员工信息:\forempinemployees:emp.putdata()if__name__==\main__\main()```您可以按照以下步骤运行代码:1.运行主函数`main()`2.输入员数量(最多100)3.依次输入每个员工的名称和ID信息4.程序将打印所有员工的信息6.DefineaDictionaryclassthathastheWordobjectsdefinedintheExercisessectionofChapter3andthenumberofwords.IncludememberfunctionFindWordtofindaword,functionAddWordtoaddaword,functionGetWordtoobtainawordandfunctionPrinttooutputallwords.```cpp#include<iostream>#include<string>#include<vector>//单词类classWord{public:Word(conststd::string&word):m_word(word){}private:std::m_word;};//字典类classDictionary{public:Dictionary():m_wordCount(0){}//查找一个单词Word*FindWord(conststd::string&word){for(auto&w:m_words){if(w->GetWord()==word){returnw;}}returnnullptr;}//添加一个单词voidAddWord(conststd::string&word){m_words.push_back(newWord(word));m_wordCount++;}//获得一个单词Word*GetWord(intindex){if(index>=0&&index<m_wordCount){returnm_words[index];}returnnullptr;}//打印输出所有单词voidPrintAllWords(){for(auto&w:m_words){std::cout<<w->GetWord()<<std::endl;}}private:std::vector<Word*>m_words;intm_wordCount;};intmain(){Dictionarydict;dict.AddWord(\apple\dict.AddWord(\banana\dict.AddWord(\cat\dict.PrintAllWords();return0;}```这段代码创建了一个名为Dictionary的字典类,其中包含一个名为Word的对象和一个单词的数量。在Dictionary类中,实现了你提到的四个成员函数:FindWord用于查找一个单词,AddWord用于添加一个单词,GetWord用于获取一个单词,PrintAllWords用于打印输出所有单词。7.WnitethedefinitionofthreeobjectsBank1,Bank2andBank3.Thesethreeobjectsallhaveprivatedatamemberbalanceandamemberfunctiondisplaytooutputthebalance.Designafriendfunctiontotalinthethreeobjectstocalculatethetotalbalancefromthesebanks.Testtheprograminthemainfunction.```cpp#include<iostream>classBank{private:doublebalance;public:Bank(doubleinitialBalance){balance=initialBalance;}voiddisplayBalance(){std::cout<<\余额:$\<<balance<<std::endl;}frienddoublecalculateTotalBalance(constBank&bank1,constBank&bank2,constBank&bank3);};doublecalculateTotalBalance(constBank&bank1,constBank&bank2,constBank&bank3){returnbank1.balance+bank2.balance+bank3.balance;}intmain(){Bankbank1(1000);Bankbank2(2000);Bankbank3(3000);bank1.displayBalance();bank2.displayBalance();bank3.displayBalance();doubletotalBalance=calculateTotalBalance(bank1,bank2,bank3);std::cout<<\总余额:$\<<totalBalance<<std::endl;return0;}```这个程序中定义了一个Bank类,其中私有数据成员是余额(balance)。类中有一个显示余额的成员函数(displayBalance)。为了使calculateTotalBalance函数能够访问银行对象的私有数据成员,我们在Bank类中声明了calculateTotalBalance函数为友元函数。在主函数中,创建了三个银行对象,并通过调用displayBalance函数显示了各自的余额。然后,调用calculateTotalBalance函数计算三个银行的总余额,并在控制台输出。8.DesignaclassnamedMyInteger.DrawtheUMLdiagramfortheclass.Implementtheclass.Writeatestprogramthattestsallfunctionsintheclass.Theclasscontainsthefollowing:(1)anintdatamembernamedvaluethatstorestheintvalue.(2)aconstructorthatcreatesaMfyIntegerobjectforthespecifiedintvalue.(3)aconstantgetfunctionthatreturnstheintvalue..(4)aconstantfunctionisEven(thatreturnstrueifthevalueiseven.(5)astaticfunctionisEven(int)thatreturnstrueifthespecifiedvalueiseven.(6)aconstantfunctionisEqual(constMyInteger&)thatreturnstrueifthevalueintheobjectisequaltothespecifiedobject'svalue.(7)afiunctionparseInt(conststring&)thatconvertsastringtoanintvalue.`MyInteger`类的UML关系图:```+-------------------+|

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论