C++面向对象程序设计[姚全珠][习题解答].pdf

上传人:qwe****56 文档编号:71060058 上传时间:2023-01-31 格式:PDF 页数:43 大小:363.19KB
返回 下载 相关 举报
C++面向对象程序设计[姚全珠][习题解答].pdf_第1页
第1页 / 共43页
C++面向对象程序设计[姚全珠][习题解答].pdf_第2页
第2页 / 共43页
点击查看更多>>
资源描述

《C++面向对象程序设计[姚全珠][习题解答].pdf》由会员分享,可在线阅读,更多相关《C++面向对象程序设计[姚全珠][习题解答].pdf(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第第第 1 1 1 1 章章章章面向对象的方法学面向对象的方法学面向对象的方法学面向对象的方法学1什么是面向对象方法学?解:面向对象方法学就是尽量模拟人类习惯的思维方式,使软件开发的方法与过程尽可能接近人类认识世界、解决问题的方法与过程,从而使描述问题的问题空间(即问题域)与实现解法的解空间(即求解域)在结构上尽可能一致。2什么是对象?它与传统的数据有何关系?有什么不同?解:对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体。它与传统数据有本质的不同,传统数据是被动地等待对它进行处理,对象是进行处理的主体。3什么是封装性和继承性?解:封装是面向对象方法的一个重要特点,即将对象的属性

2、和行为封装在对象的内部,形成一个独立的单位,并尽可能隐蔽对象的内部细节。继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。4什么是多态性?解:多态性是面向对象方法的重要特征。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。5试写出学生管理系统中所涉及的类(属性和方法)。学生管理系统中学生信息有:姓名、学号、年龄、成绩;学生管理系统完成学生信息输入、学生信息输出、插入学生信息、删除学生信息、查找学生信息。解:class Studentprivate:char cName12;/姓名long lNum;/学号int age;/年龄float fGrade;/成绩p

3、ublic:void Input();/输入学生信息void Print();/输出学生信息void Insert();/插入学生信息void Del();/删除学生信息void Find();/查找学生信息;6目前常用的面向对象程序设计语言有哪些?各有哪些特点?解:Visual C+6.0 支持面向对象编程、可视化、模块化、代码可重用和组件共享等技术,可以大大提高软件系统的设计、管理和开发速度。Java 语言是一种通用、并发、基于类的面向对象程序设计语言。Java 语言具有简捷性、面向对象、分布式、健壮性、安全性、可移植性、解释型、高性能、多线程、动态性等特点。C#(读做“C sharp”)

4、是微软公司发布的一种面向对象的、运行于.NET Framework 之上的高级程序设计语言。C#集 C 语言的简洁强大、C+的面向对象、VB 的图形化设计方法、Java 的编译与执行机制等优点于一身。C#是创新性的新式编程语言,它巧妙地结合了最常用的行业语言和研究语言中的功能,并引入了多种潜在的新功能,提高了开发人员在语言构造方面的效率,将快速的应用程序开发与对底层平台各种功能的访问紧密结合在一起,使得程序员能够在.NET 平台上快速开发各种应用程序。7C+支持多态性主要表现在哪些方面?解:C+支持两种多态性,即编译时的多态性和运行时的多态性。编译时的多态性是通过重载来实现的,运行时的多态性是

5、通过虚函数来实现的。思考题1设计一个栈类,实现的操作有初始化栈、入栈、出栈、判栈空。解:class Stackprivate:int top;int s100;public:void Ini_Stack();/初始化栈void Push_Stack();/入栈void Pop_Stack();/出栈void Empty();/判栈空;2设计一个队列类,实现的操作有初始化队列、入队、出队、判队空。解:class Queueprivate:int front,rear;int que100;public:void Ini_Queue();/初始化队列void In_Queue();/入队void

6、Out_Queue();/出队void Empty();/判队空;第第第第 2 2 2 2 章章章章类类类类 与与与与 对对对对 象象象象1构造函数和析构函数的主要作用是什么?解:构造函数的功能是在创建对象时,给数据成员赋初值,即对象的初始化。析构函数的功能是释放一个对象,在对象删除之前,用它来做一些内存释放等清理工作。2什么是 this 指针?它的主要作用是什么?解:this 指针称为自引用指针。每当对象调用成员函数时,系统就将该对象的地址赋给 this指针,这时 C+编译器将根据 this 指针所指向的对象来确定应该引用哪一个对象的数据成员。3什么是友元函数?解:友元函数不是当前类中的成员

7、函数,它可以是一个不属于任何一个类的一般函数(即非成员函数),也可以是另外一个类的成员函数。4什么是静态数据成员?静态数据成员的定义和初始化方法是什么?解:类的静态数据成员拥有一块单独的存储区,不管用户创建了多少个该类的对象,所有这些对象的静态数据成员都共享这一块静态存储空间,是这些对象互相通信的一种方法。静态数据成员的定义格式:static 类型名 静态成员名;静态数据成员的初始化格式:类型 类名静态数据成员=初始化值;5关于构造函数的叙述正确的是(B)。A构造函数可以有返回值B构造函数的名字必须与类名完全相同C构造函数必须带有参数D构造函数必须定义,不能默认6关于析构函数特征描述正确的是(

8、C)。A一个类中可以有多个析构函数B析构函数名与类名完全相同C析构函数不能指定返回类型D析构函数可以有一个或多个参数7构造函数是在(B)时被执行的。A程序编译B创建对象C创建类D程序装入内存8定义 A 是一个类,那么执行语句“Aa,b(3),*p;”调用了(A)次构造函数。A2B3C4D59在下列函数原型中,可以作为类 Base 析构函数的是(B)。AvoidBaseB Base()C Base()constDBase()10this 指针是 C+实现(B)的一种机制。A抽象B封装C继承D重载11已知类中的一个成员函数说明为:void Set(X&a)其中,X&a 的含义是(C)。A指向类 X

9、 的指针为 aB将 a 的地址赋给变量Ca 是类 X 的对象引用,用来作为 Set()的形参D变量 X 与 a 按位与作为函数 Set()的形参12下面关于友元函数的描述中,正确的说法是(A)。A友元函数是独立于当前类的外部函数B一个友元函数不能同时定义为两个类的友元函数C友元函数必须在类的外部定义D在外部定义友元函数时,必须加关键字 friend13一个类的友元函数能够访问该类的(D)。A私有成员B保护成员C公有成员D所有成员14友元的作用之一是(A)。A提高程序的运行效率B加强类的封装性C实现数据的隐藏性D增强成员函数的种类15n=1516s=1017Constructing10Destr

10、ucting20Destructing思考题1定义一个学生类,学生信息有学号、姓名和成绩。成绩包括计算机、英语、数学成绩和平均分。要求利用队列实现学生的入队、出队和显示等功能。const int MAXSIZE=5;/queue.hstruct datatypelong no;char name10;float score;class Studentprivate:datatype dataMAXSIZE;int front,rear;int num;public:Student();int In_SeQueue(datatype x);int Out_SeQueue();void Print

11、_SeQueue();/queue.cpp#include iostreamusing namespace std;#include queue.hint _tmain(int argc,_TCHAR*argv)Student sq;int i;for(i=1;i=3;i+)datatype stu;coutinput no,name,scorestu.no stu.name stu.score;sq.In_SeQueue(stu);coutPrint_SeQueueendl;sq.Print_SeQueue();sq.Out_SeQueue();coutAfter Out_SeQueue 0

12、;number-,i=(i+1)%MAXSIZE)coutdatai.no datai.name datai.score endl;2定义一个图书类,图书信息有图书名称、作者、出版社、价格。要求利用栈实现图书的入库、出库和显示等功能。const int MAXSIZE=5;/stack.hstruct datatypechar name10,author10,publish20;float price;class Stackprivate:datatype dataMAXSIZE;int top;public:Stack();int Push_SeqStack(datatype x);int

13、Pop_SeqStack();void Print_SeqStack();/stack.cpp#include iostreamusing namespace std;#include stack.hint _tmain(int argc,_TCHAR*argv)Stack sq;int i;for(i=1;i=3;i+)datatype b;coutinput name,author,publish,priceb.name b.author b.publish b.price;sq.Push_SeqStack(b);coutPrint_SeqStackendl;sq.Print_SeqSta

14、ck();sq.Pop_SeqStack();coutAfter Popendl;sq.Print_SeqStack();return 0;Stack:Stack()top=-1;int Stack:Push_SeqStack(datatype x)if(top=MAXSIZE-1)return(0);elsetop+;datatop=x;return(1);int Stack:Pop_SeqStack()if(top=-1)return 0;elsetop-;return 1;void Stack:Print_SeqStack()int i;for(i=0;i=top;i+)coutdata

15、i.namedatai.authordatai.publishdatai.priceendl;3有 Distance 类和 Point 类,将 Distance 类定义为 Point 类的友元类来实现计算两点之间距离。/point.hclass Distance;class Pointpublic:Point(int xx=0,int yy=0)X=xx;Y=yy;friend class Distance;private:int X,Y;class Distancepublic:float fDist(Point a,Point b);/point.cpp#includeiostream#i

16、ncludemath.husing namespace std;#includepoint.h#include math.hint _tmain(int argc,_TCHAR*argv)Point myp1(1,1),myp2(4,5);Distance d;coutThe distance is:;coutd.fDist(myp1,myp2)endl;return 0;float Distance:fDist(Point p1,Point p2)double x,y;x=p1.X-p2.X;y=p1.Y-p2.Y;return float(sqrt(x*x+y*y);第第第第 3 3 3

17、3 章章章章函数重载与内联函数函数重载与内联函数函数重载与内联函数函数重载与内联函数1为什么要进行函数重载?解:当函数实现的是同一类功能,只是部分细节不同(如参数的个数或参数类型不同)时,利用函数重载机制可以将这些函数取成相同的名字,从而使程序易于阅读和理解,方便记忆和使用。2什么是内联函数?解:内联函数是一个函数,它与一般函数的区别是在使用时可以像宏一样展开,所以没有函数调用的开销。因此,使用内联函数可以提高系统的执行效率。3函数重载的意义主要在于(A)。A使用方便,提高可读性B提高执行效率C减少存储空间开销D提高程序可靠性4下面关于重载函数的说法中正确的是(C)。A重载函数一定具有不同的返

18、回值类型B重载函数形参个数一定不同C重载函数一定有不同的形参列表D重载函数名可以不同5一个函数功能不太复杂,但要求被频繁调用,选用(A)。A内联函数B重载函数C递归函数D嵌套函数6将函数声明为内联函数的关键字是(C)。AregisterBstaticCinlineDextern7在内联函数内允许使用的是(C)。A循环语句B开关语句C赋值语句D以上都允许8在 C+中,下列关于参数默认值的描述中正确的是(C)。A设置参数默认值时,应当全部设置B设置参数默认值后,调用函数不能再对参数赋值C设置参数默认值时,应当从右向左设置D只能在函数定义时设置参数默认值9741013思考题1 利用重载求两个整数、三

19、个整数和四个整数的最小值。#include iostreamusing namespace std;int Min(int x1,int x2);int Min(int x1,int x2,int x3);int Min(int x1,int x2,int x3,int x4);int main()int x1,x2,x3,x4;coutinput x1,x2,x3,x4x1x2x3x4;coutMin(x1,x2)endl;coutMin(x2,x3,x4)endl;coutMin(x1,x2,x3,x4)endl;return 0;int Min(int x1,int x2)return(

20、x1x2?x1:x2);int Min(int x1,int x2,int x3)int y;y=x1x2?x1:x2;return(yx3?y:x3);int Min(int x1,int x2,int x3,int x4)int y1,y2;y1=x1x2?x1:x2;y2=x3x4?x3:x4;return(y1y2?y1:y2);2利用重载计算长方形、正方形、圆、梯形的面积和体积。#include iostreamusing namespace std;float Area(float x,float y);float Area(float x);float Area(float r,

21、const double pi);float Area(float a,float b,float h);float Volumn(float a,float b,float h);float Volumn(float a);float Volumn(float r,const float pi);float Volumn(float a,float b,float a1,float b1,float h);int main()float x,y,z,x1,y1;const float PI=3.14;cout-计算面积-endl;cout输入长、宽xy;cout长方形的面积是:Area(x,

22、y)endl;cout输入边长x;cout正方形的面积是:Area(x)endl;cout输入半径x;cout圆的面积是:Area(x,PI)endl;cout输入上底、下底及高xyz;cout梯形的面积是:Area(x,y,z)endl;cout-计算体积-endl;cout输入长、宽和高xyz;cout长方形的体积是:Volumn(x,y,z)endl;cout输入边长x;cout正方形的体积是:Volumn(x)endl;cout输入半径x;cout圆的体积是:Volumn(x,PI)endl;cout输入上底边长a、b,下底边长a1、b1,以及高xyx1y1z;cout梯形的体积是:V

23、olumn(x,y,x1,y1,z)endl;return 0;float Area(float x,float y)return x*y;float Area(float x)return x*x;float Area(float r,const double pi)return pi*r*r;float Area(float a,float b,float h)return(a+b)*h/2;float Volumn(float a,float b,float h)return a*b*h;float Volumn(float a)return a*a*a;float Volumn(flo

24、at r,const float pi)return 4*pi*r*r*r/3;float Volumn(float a,float b,float a1,float b1,float h)return h*(a*b+(a+a1)*(b+b1)+a1*b1)/6.0;3利用重载实现对 10 个整数和 10 个实数的排序。#include iostreamusing namespace std;void sort(int a,int n);void sort(float a,int n);int main()const int n=10;int i,an;float bn;cout输入n个整数e

25、ndl;for(i=0;iai;sort(a,n);cout排序结果为:endl;for(i=0;in;i+)coutai;coutendl;cout输入n个实数endl;for(i=0;ibi;sort(b,n);cout排序结果为:endl;for(i=0;in;i+)coutbi;coutendl;return 0;void sort(int a,int n)int i,j,t;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(aiaj)t=ai;ai=aj;aj=t;void sort(float a,int n)int i,j;float t;for(i=0;in

26、-1;i+)for(j=i+1;jn;j+)if(aiaj)t=ai;ai=aj;aj=t;第第第第 4 4 4 4 章章章章常量与引用常量与引用常量与引用常量与引用1使用 const 的优点是什么?应该注意哪些问题?答:使用 const 的好处是它允许指定一种语意上的约束:某种对象不能被修改而由编译器具体来实施这种约束。通过 const,可以通知编译器和其他程序员某个值要保持不变。注意问题:(1)尽量把 const 定义放进头文件里,由此通过包含头文件,把 const 定义放在一个需要放置的地方,并由编译器分配给它一个编译单元。(2)当定义一个常量(const)时,必须初始化,即赋初值给它,

27、除非用 extern 做了清楚的说明。2指出下面非法的定义。(D)Aint I;Bconst int ic;Cconst int*pic;Dint*const cpi;3下列哪些初始化为合法的?指出原因。(D)Aint i=1;Bconst int ic=I;Cconst int*pic=⁣Dint*const cpi=⁣E const int*const cpic=⁣4根据第 3 题,以下赋值哪些是非法的?为什么?(E)Ai=ic;Bpic=cpic;Cpic=⁣Dcpic=⁣Ecpi=pic;Fic=*cpic;5下列定义中,哪些是无效的?为什么?如何改正?(

28、BDFGIJ)Aint i=1.02;Bint&j=1.002;Cint&k=i;Dint&m=&i;Eint*pi=&i;Fint&n=pi;Gint&p=*pi;Hint&*pval=pi;Iconst int&iv=1;Jconst int&*pval=&ival;6下面的类型声明中正确的是(D)。Aint&a4;Bint&*p;Cint&q;Dint i,*p=&i;7建立一个包含 const 成员的类,在构造函数初始化表达式里初始化这个 const 成员,建立一个无标记的枚举,用它决定一个数组的大小。class conClassconst int NUM;public:conClas

29、s();conClass:conClass():NUM(100)8建立一个类,该类具有 const 和非 const 成员函数。建立这个类的 const 和非 const 对象,试着为不同类型的对象调用不同类型的成员函数。class Studentint No;char Name20;public:Student();int GetNo()const;/const 成员函数const char*GetName();/返回值为 const 的成员函数,不是 const 成员函数;int Student:GetNo()constreturn No;const char*Student:GetNam

30、e()return Name;9引用的使用规则是什么?答:(1)当引用被创建时,它必须被初始化(指针则可以在任何时候被初始化)。(2)一旦一个引用被初始化为指向一个对象,它就不能被改变为对另一个对象的引用(指针则可以在任何时候指向另一个对象)。(3)没有 NULL 引用。必须确保引用是和一个合法的存储单元关联。10写一个带有拷贝构造函数的类,并编写一个测试它的程序,以观察在值传递时,拷贝构造函数是否被调用。class Studentstatic int number;public:Student()number+;show(Student);/拷贝构造函数Student(const Stude

31、nt&)number+;show(Student);int Student:number=0;Student f(Student x)x.show(x inside f();return x;int main()Student h1;Student h2=f(h1);Student:show(after call f();return 0;11.略第第第第 5 5 5 5 章章章章静态与命名控制静态与命名控制静态与命名控制静态与命名控制1下列静态数据成员的特性中,错误的是(D)。A说明静态数据成员时,前边要加关键字 staticB静态数据成员在类外进行初始化C引用静态数据成员时,要在静态数据成

32、员名前加和作用域运算符D静态数据成员不是所有对象所共有的2下列关于静态数据成员的叙述,错误的是(A)。A静态数据成员在对象调用析构函数后,从内存中撤销B即使没有实例化类,静态数据成员也可以通过类名进行访问C类的静态数据成员是该类所有对象所共享D类的静态数据成员需要初始化3下列关于静态成员的叙述中,错误的是(B)。A类的外部可以直接调用类的静态数据成员和静态成员函数B与一般成员一样,只有通过对象才能访问类的静态成员C类的静态数据成员不能在构造函数中初始化D类的一般成员函数可以调用类的静态成员4声明类的成员为静态成员,必须在其前面加上关键字(B)。AconstBstaticCpublicDvirt

33、ual5静态成员为该类的所有(B)共享。A成员B对象Cthis 指针 D友元6程序运行结果:1237程序运行结果:CStatic:val=10思考题1利用静态数据成员的概念,编写一个类,统计目前存在多少个该类的对象。class Aprivate:static int n;public:A()n+;void Print()coutnendl;int A:n=0;int main()A a1;a1.Print();A a5,a2;a2.Print();return 0;2利用静态数据成员的概念,编写一个学生类,学生信息包括姓名、学号、成绩;统计学生的总人数及总成绩,并输出。#include ios

34、tream#includeiomanipusing namespace std;class Studentprivate:char*name;int stu_no;float score;static int total_num;static float total_score;public:Student(char*na,int no,float sco);void Print();int Student:total_num=0;float Student:total_score=0;int main()Student s1(张明,1,90);s1.Print();Student s2(王兰

35、,2,95);s2.Print();Student s3(于敏,3,87);s3.Print();return 0;Student:Student(char*na,int no,float sco)name=new charstrlen(na)+1;strcpy(name,na);stu_no=no;score=sco;total_num+;total_score=total_score+score;void Student:Print()cout第total_num个学生:namesetw(4)stu_nosetw(4)scoreendl;cout总人数是:total_numendl;cou

36、t总分数是:total_scoreendl;3利用静态的概念,编写一个小猫类,统计并输出每个小猫的重量、小猫的总数量及总重量。class small_cat/cat.hprivate:double weight;static double total_weight;static double total_number;public:small_cat(double w):weight(w)total_weight=total_weight+weight;total_number=total_number+1;void Print()couttotal_weighttotal_numberB+C

37、=D+4程序的运行结果:x:10,y:20 x:10,y:205程序的运行结果:a=50b=60a=-50b=-60a=50b=606程序的运行结果:i1:5i2:3i3:6i1:6i2:4i3:7思考题1重载减法运算符,实现两个字符串相减。#include iostreamusing namespace std;class Stringprivate:char*buffer;int length;public:String(char*in_str);const String&operator-=(const String&);/声明-=运算符重载函数void ShowString();Str

38、ing();int main()String s1(happy birthday),s2(birthday);s1-=s2;s1.ShowString();return 0;String:String(char*in_str)length=strlen(in_str);buffer=new charlength+1;strcpy(buffer,in_str);const String&String:operator-=(const String&sub_str)/定义+=运算符重载函数char*temp=buffer;/指向原字符串所占空间buffer=new charlength+1;/重新

39、分配空间int i,j,k;i=0;j=0;k=0;while(istrlen(temp)&jsub_str.length)if(tempi!=sub_str.bufferj)bufferk=tempi;k+;elsej+;i+;while(istrlen(temp)bufferk=tempi;k+;i+;bufferk=0;delete temp;/释放原字符串所占空间return*this;void String:ShowString()coutbufferendl;String:String()delete buffer;2编写一个程序,用成员函数重载运算符“+”和“”,实现两个二维数组

40、相加和相减,要求第一个二维数组的值由构造函数设置,另一个二维数组的值由键盘输入。const int m=3;const int n=4;class Matrix/matrix.hprivate:int amn;public:Matrix();Matrix(int bn);Matrix operator+(Matrix b);Matrix operator-(Matrix b);void Print();/matrix.cpp#includeiostreamusing namespace std;#include matrix.hint main()Matrix a,c;int xmn;int

41、i,j;coutinput Matrixendl;for(i=0;im;i+)for(j=0;jxij;Matrix b(x);c=a+b;coutendlc=a+bendl;c.Print();c=a-b;coutendlc=a-bendl;c.Print();return 0;Matrix:Matrix()int i,j;for(i=0;im;i+)for(j=0;jn;j+)aij=2;Matrix:Matrix(int bn)int i,j;for(i=0;im;i+)for(j=0;jn;j+)aij=bij;Matrix Matrix:operator+(Matrix b)Matr

42、ix c;int i,j;for(i=0;im;i+)for(j=0;jn;j+)c.aij=aij+b.aij;return c;Matrix Matrix:operator-(Matrix b)Matrix c;int i,j;for(i=0;im;i+)for(j=0;jn;j+)c.aij=aij-b.aij;return c;void Matrix:Print()int i,j;for(i=0;im;i+)for(j=0;jn;j+)coutaij;coutendl;3同题 2,用友元函数重载运算符“+”和“”实现两个二维数组相加和相减。const int m=3;/matrix.h

43、const int n=4;class Matrixprivate:int amn;public:Matrix();Matrix(int bn);friend Matrix operator+(Matrix a,Matrix b);friend Matrix operator-(Matrix a,Matrix b);void Print();/matrix.cpp#includeiostreamusing namespace std;#include matrix.hint main()Matrix a,c;int xmn;int i,j;coutinput Matrixendl;for(i=

44、0;im;i+)for(j=0;jxij;Matrix b(x);c=a+b;coutendlc=a+bendl;c.Print();c=a-b;coutendlc=a-bendl;c.Print();return 0;Matrix:Matrix()int i,j;for(i=0;im;i+)for(j=0;jn;j+)aij=2;Matrix:Matrix(int bn)int i,j;for(i=0;im;i+)for(j=0;jn;j+)aij=bij;Matrix operator+(Matrix a,Matrix b)Matrix c;int i,j;for(i=0;im;i+)fo

45、r(j=0;jn;j+)c.aij=a.aij+b.aij;return c;Matrix operator-(Matrix a,Matrix b)Matrix c;int i,j;for(i=0;im;i+)for(j=0;jn;j+)c.aij=a.aij-b.aij;return c;void Matrix:Print()int i,j;for(i=0;im;i+)for(j=0;jn;j+)coutaij;coutendl;4设计人民币类,其数据成员为 fen(分)、jiao(角)、yuan(元)。重载这个类的加法、减法运算符。class Rmb/rmb.hprivate:int yu

46、an;int jiao;int fen;public:Rmb(int y=0,int j=0,int f=0):yuan(y),jiao(j),fen(f)Rmb operator+(Rmb b);Rmb operator-(Rmb b);void Print();/rmb.cpp#include iostreamusing namespace std;#include rmb.hint main()Rmb a(5,6,7),b(3,7,8),c;c=a+b;c.Print();c=a-b;c.Print();return 0;Rmb Rmb:operator+(Rmb b)Rmb c;c.f

47、en=(fen+b.fen)%10;c.jiao=jiao+b.jiao+(fen+b.fen)/10;c.yuan=yuan+b.yuan+c.jiao/10;c.jiao=c.jiao%10;return c;Rmb Rmb:operator-(Rmb b)Rmb c;if(fenb.fen)c.fen=10+fen-b.fen;jiao-;if(jiaob.jiao)c.jiao=10+jiao-b.jiao;yuan-;c.yuan=yuan-b.yuan;return c;void Rmb:Print()coutyuan元jiao角fen分endl;5使用构造函数实现二维向量类型和复

48、数类型的相互转换。#include iostream#include iomanipusing namespace std;class Vector;class Complexprivate:double real;double imag;public:Complex(double r=0,double i=0)real=r;imag=i;double getReal()return real;double getImag()return imag;Complex(Vector);void print();class Vectorprivate:double x,y;public:Vector

49、(double tx=0,double ty=0)x=tx;y=ty;double getx()return x;double gety()return y;Vector(Complex);void print();int main()Vector v(7.5,9.6);Complex c;c=Complex(v);c.print();Complex c1(13.4,-9.3);Vector v1;v1=Vector(c1);v1.print();return 0;Complex:Complex(Vector v)real=v.getx();imag=v.gety();void Complex

50、:print()cout0)cout+;if(imag!=0)coutimagiendl;Vector:Vector(Complex c)x=c.getReal();y=c.getImag();void Vector:print()cout(x,y)endl;第第第第 7 7 7 7 章章章章组合、继承与多态性组合、继承与多态性组合、继承与多态性组合、继承与多态性一、填空题1在编译时确定函数调用称为.静态 绑定。在运行时确定函数调用称为动态绑定。2如果 A 是从 B 继承而来,则 A 叫子类,B 叫父类。3在多重派生过程中,如果想使公共的基类在派生时只有一个副本,则可以将这个基类声明为虚基类。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁