CPP复习题答案_第1页
CPP复习题答案_第2页
CPP复习题答案_第3页
CPP复习题答案_第4页
CPP复习题答案_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、选择题1. C+语言本身没有定义I/O操彳C+标准库iostream提供了基本的I/O类。I/O 操作分别由两个类istream和(C )提供,由它们派生出一个类iostream ,提供 双向I/O操作。A. fstreamB. iostream C. ostream D. cout2 .引入联函数的主要目的是(B )。A.缩短程序代码,少占用存空间B.既可以保证程序的可读性,又能提高程序的运行效率C.占用存空间少,执行速度快D.使程序的结构比较清晰3 .重载函数是(A )A.以函数参数来区分,而不用函数的返回值来区分不同的函数B.以函数的返回值来区分,而不用函数参数来区分不同的函数C.参数表

2、完全相同而返回值类型不同的两个或多个同名函数D.参数表和返回值类型都必须是不同的两个或多个同名函数4 .在C+中,数据封装要解决的问题是( D )。A.数据的规化B.便于数据转换C.避免数据丢失D.防止不同模块之间数据的非法访问5 .下列特T中,(B)不是面向对象的程序设计的特征。A.继承B.联函数C.多态性D.封装6 .类B的对象必定是类 A的对象,但是类A的对象却不属于类 B,则类B和类A之间的关系是(C )。A.组合关系 B.间接关系C.继承关系 D.直接关系7 .下面对于友元函数描述正确的是(C)。A.友元函数的实现必须在类的部定义B.友元函数是类的成员函数C.友元函数破坏了类的封装性

3、D.友元函数不能访问类的私有成员Word资料8 .以下关于析构函数的描述中(C A.析构函数声明和定义中没有形参 C.析构函数可以重载9 .下面叙述错误的是(A.基类的 protectedB.基类的 protectedC.基类的 protectedD.基类的 protected 10.如果一个类至少有A.抽象类C.派生类11.当公有继承时,基类的 象来直接访问该成员。A.任何成员C.保护成员和私有成员)是错误的。8 .析构函数可以定义为联函数。D.析构函数可以定义为虚函数。A )。成员在派生类中仍然是protected的成员在public派生类中仍然是protected的。成员在private

4、派生类中是 private的。成员不能被派生类的对象访问。个纯虚函数,那么就称该类为( A )。B.虚基类D.以上都不对(D )在派生类中成为保护成员,不能通过派生类的对B.公有成员和保护成员D.保护成员12 .当私有继承时,基类的(A )在派生类中成为私有成员,不能通过派生类的对 象来直接访问该成员。A.任何成员C.保护成员和私有成员B.公有成员和保护成员D.私有成员13 .派生类的对象对它的基类成员中( A )是可以采用对象 域者对象指针-> 的 方式访问的。A.公有继承的公有成员C.公有继承的保护成员B.公有继承的私有成员D.私有继承的公有成员14 .关于纯虚函数和抽象类的描述中,

5、错误的是( C )。A.纯虚函数是一种特殊的虚函数,它没有具体的实现。B.抽象类是指具有纯虚函数的类。C. 一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类。D.抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出。15 .下列说法错误的是(C )。A.若语言只支持类而不支持多态,则不能称为面向对象的。B.在运行时根据其类型确定调用哪个函数的能力叫多态性。C.静态多态性也是在运行时根据其类型确定调用哪个函数。D.C+中的静态多态性是通过函数重载进行实现的。16 .( D )不是构造函数的特征A.构造函数的函数名与类名相同。B.构造函数可以重载。C.构造函数可以设置缺省参数。D.构造函

6、数必须指定类型说明。17 .下列标识符中,A不是C+的关键字;A. cinB. privateC.thisD.operator18 .下列标识符中,A不是C+的关键字;A. coutB. virtualC.thisD.template18 .下列标识符中,A不是C+的关键字;A. coutB. publicC.thisD.sizeof19 .下列标识符中,A不是C+的关键字;A. coutB. deleteC.thisD.sizeof20 .下列标识符中,A不是C+的关键字;A. cout B. new C. thisD. void21 .引用是一个变量的别名,下列关于的引用的描述,正确的是

7、(A )。A.引用的值与被引用变量的值相等,存地址相同;B.引用的值与被引用变量的值相等,存地址不相同;C.引用的值与被引用变量的值不等,存地址相同;D.引用的值与被引用变量的值不等,存地址不同;22 .公有继承时,子类的访问接口由( D )组成:A.父类的非私有成员和子类的非私有成员;B.父类的公有成员和子类的非私有成员;C.父类的非私有成员和子类的公有成员;D.父类的公有成员和子类的公有成员;23 .公有继承时,子类对象只可访问父类中的(B )和子类自己的公有成员。A.非私有成员;B.公有成员;C.私有成员;D .保护成员;24 .公有继承时,子类成员函数不可以直接访问父类中( C )。A

8、.非私有成员;B.公有成员;C.私有成员;D .保护成员;25 .公有继承时,子类对象和子类成员函数必须通过父类(A )的成员函数访问父类私有成员。A.非私有;B.非公有; C.静态; D.私有;26 .下列关于虚函数的描述,正确的是( C )。A.静态成员函数可以是虚函数;B.构造函数可以是虚函数;C.析构函数可以是虚函数;D.联函数可以是虚函数;27 .下列关于虚函数的描述,正确的是( B )。A.静态成员函数可以是虚函数;B.构造函数不可以是虚函数;C.析构函数不可以是虚函数;D.联函数可以是虚函数;28 .下列关于虚函数的描述,错误的是( B )。A.静态成员函数不可以是虚函数;B.构

9、造函数可以是虚函数;C.析构函数可以是虚函数;D.联函数不可以是虚函数;29 .下列关于虚函数的描述,错误的是( C )。A.静态成员函数不可以是虚函数;B.构造函数不可以是虚函数;C.析构函数不可以是虚函数;D.联函数不可以是虚函数;注:静态成员函数不能是虚函数;联函数不能是虚函数; 构造函数不能是虚函数;析构函数可以是虚函数,且通常声明 为虚函数。填空题1 .在 C+程序中,使用基本输入输出流需要包含的头文件是 iOstream.h "。2 .具有相同函数名但具有不同参数表的函数称为重载函数。3 .在一个函数的定义或声明前加上关键字inline 时,该函数就声明为联函数。4 .当

10、一个类对象的成员函数被调用时,该成员函数的 this 指针指向调用它的对 象。5 .在撤销类白对象时,C+程序将自动调用该对象的析构 函数。6 .对类中的成员函数和属性的访问是通过public、 private 和_protected 这 3 个关键字来控制的。7 .当用public继承从基类派生一个类时,基类的public成员成为派生类的public 成员,protected 成员成为派生类的 protected 成员。8 .有如下定义语句:MyClass p10,*q;则系统自动调用该类构造函数10空 当类对象数组 p离开它的彳用域时,系统自动调用该类析构函数J0 次。9 .在类定义中,将

11、 =0置于虚函数的函数原型的末尾可以将该函数声明为纯虚函 数。10 .带有 纯虚函数的类称为抽象类,它只能作为其他派生类的基类 来使用。11 .假定用户没有名一个名为MyClass的类定义析构函数,则系统为其定义的默认析构函数形式为MyClass:MyClass() 。12 .有如下定义语句:MyClass *p;,则执行p=new MyClass;语句时,将自动调用该类的 构造函数。执行delete p;语句时,将自动调用该类的析构函数。13 .有如下对象数组定义语句:MyClass *p10;当对象指针数组 p离开它的作用域时,系统自动调用该类析构函数0 次。指针不调用,申请存时才调用。1

12、4 .在结构定义中,数据和成员函数默认权限是公有的。在类定义中,数据和成员函数默认权限是私有的。15 . C+是混合性程序设计语言,既支持面向过程,又支持面向对象 。16 .面向对象程序设计的三大特点:封装 、 继承、 多态 。17 .重载函数调用时,编译器按返回类型、参数类型、参数个数、参数顺序进行匹配,重载函数至少在参数个数 、 参数类型、 或 参数顺序上有所不同。18 .函数模板比函数重载的表达更简洁,但只有参数个数相同、 函数体 相同,仅 类型不同的函数才能定义模板。19 . void型指针是通用型指针,任何 类型的指针值都可以赋给 void类型指针,但使用时必须进行显式 转换,否则出

13、错。20 .在程序中使用运算符 new申请存,应该相应地使用运算符delete来释放申请的存。22 . JAVA是纯面向对象语言,C+是混合性程序设计语言,混合语言的特点是既支持传统的程序设计方法,又支持面向对象程序设计方法。23 .类是 数据 和 代码的复合体。 数据(成员)和(成员)函数 也OK!24 .类可以有多个构造函数,有 一个析构函数。25 .若类中一个构造函数都没有, 则C+自动提供一个无参数的默认构造函数,负责创建对象。26 .类中 const数据成员和 引用 类型的数据成员必须在该类的对象建立的同时进行初始化,这种初始化只能用成员初始化列表进行。27 .在类中使用 stati

14、c 声明的成员称为静态成员。28 .静态成员函数在类中只有语法上的作用,它不是对象的成员,没有this 指针,必须将对象作为参数传入,才能在静态成员函数访问该对象的成员。29 .友元函数是对设计类时未定义完整操作集的补充,是类外的函数,它不是对象 的成员函数,没有this指针,必须将对象作为参数传入。30 . C程序是由一组函数组成的,C+面向对象程序是由一组类组成的。31 .面向对象的程序设计主要是类的设计,在编译时,一个面向对象的系统由组成,在运行时,系统由 对象 组成。32 . 单一继承形成一个倒挂的树;多重继承形成一个有向无环图。33 .当类中包含虚拟函数时,C+编译器为类加上一个虚函

15、数 指针,该指针指向虚拟函数表。34 .当类中包含虚拟函数时,C+编译器为类加上一个虚函数指针,该指针指向虚拟函数表。35 .包含虚拟函数白类通过 vptr指针 和虚拟函数表可以在程序运行时依据指针实际指向的对象调用对应的虚拟函数,从而实现多态,达到动态绑定的目 的。36 .派生类的对象可以赋给基类的对象;由于基类对象不具有派生类对象所具有的成员,因此 基类的对象不可以赋值给 派生类对象。37 .运算符重载的实质就是函数重载 。通过运算符重载可以使应用于基本数据类型的运算符作用于用户自定义数据类型。问答题:1 .面向过程和面向对象在程序组织方式上的差别?面向过程的核心是功能的分解,最终的程序由

16、过程构成,将数据结构和过程作为两个实体对待,着重点在过程。缺点就是一旦数据结构需要变更,需修改与之有关 的所有模块。面向对象中数据构成软件分解的基础,而不是功能,数据与定义在在它上面的用 户需要构成整体,数据本身不能被外部程序和过程直接存取。程序一般由类的定义 和类的使用两部分组成,在主程序中定义各对象并规定它们之间传递消息的规律。 程序中的一切操作都是通过向对象发送消息来实现,对象接收到消息后,启动有关 方法完成操作。类由继承关系产生相互的联系。2 .C+中采用类的概念将数据以及处理数据的函数封装在一起的好处?C+采用类(class)的概念将数据以及处理数据的函数封装在一起,将一部分行为作为

17、外部访问的接口与外部发生联系,而将数据和其他行为进行有效隐藏,就可以达 到对数据访问权限的合理控制。通过这种有效隐藏和合理控制,就可以增强数据的 安全性,减轻开发软件系统的难度。3 .面向对象程序设计具有哪三大特点及其目的?封装,继承,多态封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让 可信的类或对象操作,对不可信的进行信息隐藏。继承:可以使用类的现有类的所有功能,并在无需编写原来类的情况下对这些功 能进行扩展。多态:允许将子类类型的指针赋值给父类类型的指针。4 .C+程序设计语言中this指针的作用?一个对象的this指针并不是对象本身的一部分,不会影响sizeof(

18、对象)的结果。this作用域是在类部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器 会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写 上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。5 .C+程序设计语言中虚函数指针和虚函数表的作用?C+编译器为每个“含虚拟函数的类”建立一个虚拟函数表(vtable),表中每一个指针元素指向一个虚拟函数的地址,编译器为类加上一个成员变量vptr, vptr是一个指向虚拟函数表的指针。每一个派生类的对象,都有一个 vptr,对象调用虚拟函数 就是通过vpt

19、r找到虚拟函数表,再找到虚拟函数的真正地址。虚拟函数表的容是依 据类中的虚拟函数声明次序一一填入函数指针。派生类继承基类的虚拟函数表,派 生类中改写虚拟函数,虚拟函数表中元素所指的函数地址不再是基类的函数地址, 而是派生类的函数地址。包含虚拟函数的类通过 vptr指针和虚拟函数表可以在程序运行时依据指针实际指向 的对象调用对应的虚拟函数,从而实现多态(Polymorphism)。为了达到动态绑定的目的,虚拟函数是了解多态 (Polymorphism)以及动态绑定的关键,同时也是了解如 何使用MFC的关键。6 .C+程序设计语言是如何实现多态的?共用同一个函数名,同时有不同数量或者不同类型的参数

20、。系统会根据参数自动 调用对应的函数,这样就实现了多态7 .为什么析构函数通常声明为虚函数,而构造函数不能是虚函数?因为构造函数不被继承,而虚函数是要在派生类中重定义的。定义虚析构函数后,由于多态,当使用基类指针指向派生类对象时,会调用派生类的虚构函数,然后派 生类的析构函数自动调用基本析构函数。不是虚的话,直接调用基类的析构函数了。如果派生类中有用 new分配的存,就无法释放。8 .为什么子类对象可以给父类对象赋值,而父类对象不能给子类对象赋值?父类定义为抽象接口类,子类继承父类然后重新实现接口。C+中子类的对象赋值给父类的对象。如果把子类的对象赋值给父类的对象,只是把子类中的父类子对 象赋

21、值给父类的对象,父类的对象无法拥有子类特有的成员。9 .类中的静态成员与类的数据成员有什么区别?静态数据成员是拥有全局寿命的成员,即在文件的开始到结束期间,存始终都为 其分配存储单元,它可以是局部变量,也可以使全局变量。非静态数据成员,其寿 命局限于其块作用域,从f”后定义开始到遇到 代表其结束,存自动释放空间。10 .深拷贝和浅拷贝的区别?当出现类的等号赋值时,会调用拷贝函数在未定义显示拷贝构造函数的情况下, 系统会调用默认的拷贝函数 一一即浅拷贝,它能够完成成员的一一复制。当数据成 员中没有指针时,浅拷贝是可行的。但当数据成员中有指针时,如果采用简单的浅 拷贝,则两类中的两个指针将指向同一

22、个地址,当对象快结束时,会调用两次析构 函数,而导致指针悬挂现象。所以,这时,必须采用深拷贝。深拷贝与浅拷贝的区 别就在于深拷贝会在堆存中另外申请空间来储存数据,从而也就解决了指针悬挂的 问题。简而言之,当数据成员中有指针时,必须要用深拷贝。11 .指针类型的作用?子类指针与父类指针强制转换时要注意什么?因为子类实例在存排列上,先是把父类的所有容排在前面,因此父类的指针指过来 时,父类的各成员的偏移地址都是不变的.12 .何为抽象类?抽象类在程序中的作用?抽象类指的是含有纯虚函数的类,该类不 能建立对象,只能声明指针和引用,用于基础类的接口声明和运行时的多态另外, 如果抽象类的某个派生类在向继

23、承体系的根回溯过程中,并不是所有的纯虚函数都 实现了,该类也是抽象类,同样不能建立对象。抽象类的主要作用是将有关的组织 在一个继承层次结构中,由它来为它们提供一个公共的根,相关的子类是从这个根 派生出来的。13 .运算符重载的本质是什么?有哪两种实现方式?本质就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据 类型。方式:1.定义为它将要操作的类的成员函数2.定义为类的友元函数。14 .联函数的优缺点?通常在什么情况下使用?优点是提高运行时间效率,缺点是增加了空间开销联函数在C+类中,应用最广的,用来定义存取函数。我们定义的类中一般会把 数据成员定义成私有的或者保护的,这样,外

24、界就不能直接读写我们类成员的数据 了。对于私有或者保护成员的读写就必须使用成员接口函数来进行。如果我们把这 些读写成员函数定义成联函数的话,将会获得比较好的效率。读程题1 .在注释符后面注明变量类型(全局变量、局部变量、静态变量)及输出结果。#include "iostream.h"int length=10;/变量类型: 全局变量int countVolumn(int width,int height);int countVolumn(int length,int width,int height);void main() cout<<"length

25、 = "<<length<<endl;输出结果:length=10int length,width,height,volumn;/ 变量类型:局部变量length=1; width=1; height=1;volumn=:length*width*height; cout<<" 体积="<<volumn<<endl;/输出结果:体积=10volumn=countVolumn(width,height);cout<<"体积="<<volumn<<end

26、l;/输出结果:体积=10volumn=length*width*height;cout<<"体积="<<volumn<<endl;/输出结果:体积=1volumn=countVolumn(length,width,height);cout<<" 体积="<<volumn<<endl;/输出结果:体积=2volumn=countVolumn(length,width,height);cout<<"体积="<<volumn<<en

27、dl;/输出结果:体积=3 int countVolumn(int width,int height)return length*width*height; int countVolumn(int length,int width,int height)static int temp=1;/变量类型:静态变量temp=temp+length;return temp*width*height; 2 .下列程序给出了基类CFurniture及其派生类CDesk的描述,分析成员函数ShowInfo ()和main()中带下划线的代码行正确性,并依据注释行的提示给出结果。#include "

28、iostream.h"class CFurniture private:double Weight; protected:int Material;public:int Color;public:CFurniture (int c,int m,double w)Color=c; Material=m;Weight=w; CFurniture ()double GetWeight()return Weight;int GetMaterial() return Material;int GetColor() return Color;;class CDesk:public CFurnit

29、ureprivate:int Length,Width;public:int Height;public:CDesk (int H,int L,int W,int c, int m, double w): CFurniture (c,m,w) Height=H; Length=L; Width=W; CDesk ()void ShowInfo();void CDesk:ShowInfo( )/注:可访问的,不需要修改。判断该成员函数中能否访问下列数据,如不可访问,改为可访问cout<<Length<<endl; 判断: 可访问 修改:cout<<Width&

30、lt;<endl;判断:可访问修改:cout<<Height<<endl;判断:可访问修改:cout<<Color<<endl;判断:可访问修改:cout<<Material<<endl; /判断:可访问修改:cout<<Weight<<endl;/判断:cout<<GetWeight()<<endl; void main()判断带下划线代码行的正确性,如正确,写出结果;如不正确,写出原因CDesk mDesk(1,2,3,4,5,100);cout<< m

31、Desk.Length<<endl; 判断: 错原因或结果子类对象不可直接访问类的私有成员cout<< mDesk.Width<<endl;/ 判断: 错原因或结果子类对象不可直接访问类的私有成员cout<< mDesk.Height<<endl; 判断:正确原因或结果1cout<< mDesk .Color<<endl;判断:正确 原因或结果 4cout<< mDesk .Material<<endl;/ 判断: 错原因或结果 子类对象不可直接访问父类的保护成员cout<<

32、 mDesk .Weight<<endl;/ 判断: 错原因或结果子类对象不可直接访问父类的保护成员3 .下列程序是关于虚拟函数与多态的。读程序,写出程序运行结果。#include "iostream.h" class CShapeWord资料 public:int color;public:virtual void display() cout<<"Shape n";class CRect:public CShapepublic:double length,width;public:virtual void display()

33、cout<<"Rectangle n"class CSquare:public CRectpublic:double edgeLength;public:virtual void display() cout<<"Square n"void main()CShape aShape;CRect aRect;CSquare aSquare;aShape.color=1;aRect.color=2;aSquare.color=3;CShape *pShape尸&aShape,&aRect,&aSquare; fo

34、r(int i=0;i<3;i+)pShapei->display();cout<<pShapei->color<<endl;(CRect *)pShape0)->display();cout<< (CShape *)pShapei)->color<<endl;运行结果为:ShapeRectangle2Square3Shape14 .依据下列类的继承的描述,参照示意图,回答main函数中的问题。class CBasepublic:int x;int xb CBase1JBaseA;Word资料int aint xin

35、t b一i CBaseC类>CBaseB对象J完整class BaseA:public CBase public:int a;;class BaseB :public CBasepublic:int b;;class C: public BaseA, public BaseBpublic:char c;int addA() return BaseA:x + BaseB:x;;void main()判断带下划线代码行的正确性,如正确,写出结果;如不正确,写出原因C mObj;mObj.x; 判断:错 原因或结果:产生二义性mObj.CBase:x;判断:错 原因或结果:产生二义性mObj.

36、BaseA:x=5;mObj.BaseB:x=10;cout<<mObj.BaseA:x<<endl; 判断:正确原因或结果: 5cout<<mObj.BaseB:x<<endl;判断:正确原因或结果:1021 .分析下列程序,写出其运行结果。#include <iostream.h>#define N 100class CStackprivate:int stackN;int top;public:CStack() top=0; cout<<"Hello " CStack() cout<<

37、"Bye" void push(int i);int pop();void class CStack:push(int i)if (top=N)cout<<"Overflow"return;elsetop+;stacktop=i;int class CStack:pop()int temp;if (top=0)cout<<"Underflow"return 0;elsetemp=stacktop;top-; return temp;void main()CStack *ptr=new CStack;ptr-&g

38、t;push (100);ptr->push(60);cout <<ptr->pop( )<<""cout <<ptr->pop( )<<""cout << "OK!"<<endl;delete ptr;答:Hello 60 100 OK !Bye22 .分析下列程序,写出其运行结果。#include <iostream.h>class vehicleint wheels;float weight;public:void messag

39、e(void) cout << Vehicle messagen " ;class car : public vehicleint passenger_load;public:void message(void) cout << Car messagen "class truck : public vehicleint passenger_load;float payload;public:int passengers(void) return passenger_load;class boat : public vehicleint passeng

40、er_load;public:int passengers(void) return passenger_load; void message(void) cout << Boat messagen 二;int main()vehicle *unicycle;unicycle = new vehicle; unicycle ->message();delete unicycle;unicycle = new car; unicycle ->message();delete unicycle ;unicycle = new truck; unicycle ->mes

41、sage(); delete unicycle ;unicycle = new boat; unicycle ->message();delete unicycle ;return 0; 答:Vehicle messageVehicle messageVehicle messageVehicle message23 .如果将上题第22小题中vehicle的成员函数 message的定义改为: virtual void message(void) cout << Vehicle message n " 写出修改后的程序的运行结果。答:Vehicle messageCa

42、r messageVehicle messageBoat message21.分析下列程序,写出其运行结果。#include <iostream.h>class MyClasspublic:MyClass(int a)x=a;void Fun1()x+;void Fun2()x+=2;void Fun3()x+=3;void Print()cout<<"x="<<x<<end1; private:int x;void main()MyClass my(8);void (MyClass:*pf)();my.Print();pf=

43、MyClass:Fun1;(my.*pf)();my.Print();pf=MyClass:Fun2;(my.*pf)();my.Print();pf=MyClass:Fun3;(my.*pf)();my.Print(); 答:x=8x=9x=11x=1427.下列程序定义了一实部为mal,虚部为imag的复数类complex,并在类中重载了复数的+、-操作。请将下列程序补充完整。Class Complexpublic:Complex(double r=0.0,double i=0.O)real=r;imag=i ; Complex operator +(Complex);friend Com

44、plex operator -(Complex,Complex);private:double real,imag;Complex Complex: operator +(Complex c) this->real+=c.real,this->imag+=c.imag; return *this;Complex operator -(Complex c1,Complex c2)return Complex( c1.real+c2.real,c1.imag+c2.imag );26.下面程序是一个含有比较运算符和赋值运算符重载的程序,请填空完成程序实 现该程序。#include &l

45、t;iosteam.h>class pointprivatefloat x,y;public:point(float xx=0,float yy=0) x=xx,y=yy ; point(point&);point();bool operator=(point);bool operator!=(point);point& operator+=(point);float getx()return x; float gety()return y;point:point(point& p) x=p.getx(),y=p.gety() ;bool point:operat

46、or=(point p)if(x=p.getx()&&(y=p.gety()return 1;elsereturn 0;bool point:operator!=(point p) if(x!=.getx()&&(y!=.gety()return 1;elseReturn 0;point& point:operator+=(point p) this->x+=p.getx();this->y+=p.gety(); return *thisvoid main()point p1(1,2),p2(3,4);p3(5,6);cout<<

47、 "p1=p2?”<<(p1=p2)<<endl;cout<< "p1!=p2?”<<(p1!=p2)<<endl;p3+=p1;cout<< "p3+=p1,p3:“<<p3.getx()<<p3.gety()<<endl;)Word资料四、程序设计题1.运算符重载:依据下列关于矩阵类的描述,写出+、-等操作符重载的实现。不考#include "iostream.h"#include "stdlib.h"class

48、CMyArraypublic:int raw,col;long *data;public:CMyArray(int m,int n);CMyArray()raw=0; col=0; data=NULL;CMyArray()CMyArray operator + (CMyArray& B);/写出矩阵加法运算符重载的实现CMyArray operator-(CMyArray& B); /写出矩阵减法运算符重载的实现;CMyArray:CMyArray(int m,int n)raw=m; col=n;data=new longraw*col;for(int i=0;i<m;

49、i+)for(int j=0;j<n;j+)*(data+i*col+j尸rand();/写出矩阵加法运算符重载的实现CMyArray CMyArray:operator + (CMyArray& b)/写出矩阵减法运算符重载的实现CMyArray CMyArray:operator-(CMyArray& b)2 .依据下列关于复数类的描述,写出一、/、= =、!=等操作符重载的实现。class CComplexprivate:int real, image;public:CComplex(int a,int b)real=a;image=b;CComplex()CComplex()int getReal() return real;int getImage()return image;CComplex operator-(CComplex& c);/给出实现BOOL operator= =(CComplex& c

温馨提示

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

评论

0/150

提交评论