CPP复习题答案

上传人:飞*** 文档编号:28129649 上传时间:2021-08-23 格式:DOC 页数:19 大小:98.82KB
收藏 版权申诉 举报 下载
CPP复习题答案_第1页
第1页 / 共19页
CPP复习题答案_第2页
第2页 / 共19页
CPP复习题答案_第3页
第3页 / 共19页
资源描述:

《CPP复习题答案》由会员分享,可在线阅读,更多相关《CPP复习题答案(19页珍藏版)》请在装配图网上搜索。

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

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

3、数是类的成员函数C. 友元函数破坏了类的封装性 D.友元函数不能访问类的私有成员8. 以下关于析构函数的描述中( C )是错误的。A.析构函数声明和定义中没有形参 B.析构函数可以定义为内联函数。C.析构函数可以重载 D.析构函数可以定义为虚函数。9. 下面叙述错误的是( A )。A. 基类的protected成员在派生类中仍然是protected的B. 基类的protected成员在public派生类中仍然是protected的。C. 基类的protected成员在private派生类中是private的。D. 基类的protected成员不能被派生类的对象访问。10. 如果一个类至少有一个

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

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

6、类名相同。B. 构造函数可以重载。 C. 构造函数可以设置缺省参数。D. 构造函数必须指定类型说明。17下列标识符中, A 不是C+的关键字; A. cinB. privateC. this D. operator18下列标识符中, A 不是C+的关键字; A. coutB. virtualC. this D. template18下列标识符中, A 不是C+的关键字; A. coutB. publicC. this D. sizeof19下列标识符中, A 不是C+的关键字; A. coutB. deleteC. this D. sizeof20下列标识符中, A 不是C+的关键字; A.

7、coutB. new C. this D. void21引用是一个变量的别名, 下列关于的引用的描述,正确的是( A )。A引用的值与被引用变量的值相等,内存地址相同;B引用的值与被引用变量的值相等,内存地址不相同;C引用的值与被引用变量的值不等,内存地址相同;D引用的值与被引用变量的值不等,内存地址不同;22公有继承时,子类的访问接口由( D )组成: A父类的非私有成员和子类的非私有成员; B父类的公有成员和子类的非私有成员; C父类的非私有成员和子类的公有成员; D父类的公有成员和子类的公有成员;23公有继承时,子类对象只可访问父类中的( B )和子类自己的公有成员。 A非私有成员; B

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

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

10、函数的定义或声明前加上关键字 inline 时,该函数就声明为内联函数。4. 当一个类对象的成员函数被调用时,该成员函数的 this 指针指向调用它的对象。5.在撤销类的对象时,C+程序将自动调用该对象的 析构 函数。6. 对类中的成员函数和属性的访问是通过 public 、 private 和 protected 这3个关键字来控制的。7. 当用public继承从基类派生一个类时,基类的public成员成为派生类的_public_成员,protected成员成为派生类的_ protected _ 成员。8. 有如下定义语句:MyClassp10,*q;则系统自动调用该类构造函数 10 次。当

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

12、指针数组p离开它的作用域时,系统自动调用该类析构函数 0 次。/指针不调用,申请内存时才调用。14. 在结构定义中,数据和成员函数默认权限是公有的。在类定义中,数据和成员函数默认权限是 私有的 。15C是混合性程序设计语言,既支持面向过程,又支持面向 对象 。16面向对象程序设计的三大特点: 封装 、 继承 、 多态 。17重载函数调用时,编译器按返回类型、参数类型、参数个数、参数顺序进行匹配,重载函数至少在 参数个数 、 参数类型、 或 参数顺序 上有所不同。18函数模板比函数重载的表达更简洁,但只有 参数个数相同 、 函数体 相同,仅 类型 不同的函数才能定义模板。19void型指针是通用

13、型指针, 任何 类型的指针值都可以赋给void类型指针,但使用时必须进行 显式 转换,否则出错。20在程序中使用运算符new申请内存,应该相应地使用运算符 delete 来释放申请的内存。22JAVA是纯面向对象语言,C+是混合性程序设计语言,混合语言的特点是既支持传统的程序设计方法,又支持 面向对象 程序设计方法。23类是 数据 和 代码 的复合体。/ 数据(成员) 和(成员)函数 也OK!24类可以有 多 个构造函数,有 一 个析构函数。25若类中一个构造函数都没有,则C+自动提供一个无参数的 默认构造函数 ,负责创建对象。26类中 const数据成员 和 引用 类型的数据成员必须在该类的

14、对象建立的同时进行初始化,这种初始化只能用成员初始化列表进行。27在类中使用 static 声明的成员称为静态成员。28静态成员函数在类中只有语法上的作用,它不是对象的成员,没有 this 指针,必须将对象作为参数传入,才能在静态成员函数访问该对象的成员。29友元函数是对设计类时未定义完整操作集的补充,是类外的函数,它不是对象的成员函数,没有 this 指针,必须将对象作为参数传入。30C程序是由一组 函数 组成的,C+面向对象程序是由一组 类 组成的。31面向对象的程序设计主要是类的设计,在编译时,一个面向对象的系统由 类 组成,在运行时,系统由 对象 组成。32 单一 继承形成一个倒挂的树

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

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

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

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

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

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

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

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

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

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

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

26、eight);cout体积volumnendl; /输出结果: 体积=2 volumn=countVolumn(length,width,height);cout体积volumnendl; /输出结果: 体积=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.下列程序给出了

27、基类CFurniture 及其派生类CDesk的描述,分析成员函数ShowInfo()和main()中带下划线的代码行正确性,并依据注释行的提示给出结果。#include iostream.hclass CFurnitureprivate: 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 GetMa

28、terial() return Material;int GetColor() return Color;class CDesk:public CFurniture private: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( )/注:可访问的,不需要修改。/判断该成员函数中

29、能否访问下列数据,如不可访问,改为可访问coutLengthendl; /判断: 可访问 修改: coutWidthendl; /判断:可访问 修改: coutHeightendl; /判断: 可访问 修改: coutColorendl; /判断: 可访问 修改: coutMaterialendl; /判断: 可访问 修改: coutWeightendl; /判断: 不可访问 修改: coutGetWeight()endl; void main( ) /判断带下划线代码行的正确性,如正确,写出结果;如不正确,写出原因CDesk mDesk(1,2,3,4,5,100);cout mDesk.L

30、engthendl; /判断: 错 原因或结果 子类对象不可直接访问类的私有成员 cout mDesk.Widthendl; /判断:错 原因或结果 子类对象不可直接访问类的私有成员 cout mDesk.Heightendl;/判断:正确 原因或结果 1 cout mDesk .Colorendl; /判断: 正确 原因或结果 4 cout mDesk .Materialendl;/判断:错 原因或结果 子类对象不可直接访问父类的保护成员 cout mDesk .Weightendl; /判断: 错 原因或结果 子类对象不可直接访问父类的保护成员 3.下列程序是关于虚拟函数与多态的。读程序,

31、写出程序运行结果。#include iostream.hclass CShapepublic: int color;public: virtual void display() coutShape n;class CRect:public CShapepublic: double length,width;public: virtual void display() coutRectangle n;class CSquare:public CRectpublic: double edgeLength;public: virtual void display() coutSquare n;voi

32、d main() CShape aShape;aShape.color=1; CRect aRect;aRect.color=2; CSquare aSquare;aSquare.color=3; CShape *pShape=&aShape,&aRect,&aSquare; for(int i=0;idisplay();coutcolordisplay(); coutcolorendl;运行结果为:Shape 1 Rectangle 2 Square 3 Shape 14.依据下列类的继承的描述,参照示意图,回答main函数中的问题。class CBase CBaseint xint ain

33、t xint bchar cpublic: BaseA int x;完整C类对象class BaseA:public CBase CBase CBaseBpublic: int a;class BaseB :public CBase public: int b;class C: public BaseA, public BaseB public: char c; int addA() return BaseA:xBaseB:x;void main( )/判断带下划线代码行的正确性,如正确,写出结果;如不正确,写出原因C mObj; mObj.x; /判断:错 原因或结果: 产生二义性 mObj

34、.CBase:x;/判断:错 原因或结果: 产生二义性 mObj.BaseA:x=5; mObj.BaseB:x=10; coutmObj.BaseA:xendl;/判断:正确 原因或结果:5 coutmObj.BaseB:xendl;/判断:正确 原因或结果: 10 21.分析下列程序,写出其运行结果。#include #define N 100class CStackprivate: int stackN;int top;public:CStack() top=0; coutHello ;CStack() coutBye; void push(int i) ;int pop();void

35、class CStack:push(int i)if (top=N) coutOverflow;return;else top+; stacktop=i;int class CStack:pop()int temp;if (top=0) coutpush (100);ptr-push(60);cout pop( ) ;cout pop( ) ;cout OK!endl;delete ptr;答: Hello 60 100 OK! Bye 22. 分析下列程序,写出其运行结果。#include class vehicleint wheels;float weight;public:void me

36、ssage(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 vehicle int passenger_load;public:int pa

37、ssengers(void) return passenger_load; void message(void) cout message();delete unicycle;unicycle = new car; unicycle -message();delete unicycle ;unicycle = new truck; unicycle -message(); delete unicycle ;unicycle = new boat; unicycle -message();delete unicycle ;return 0;答: Vehicle message Vehicle m

38、essage Vehicle message Vehicle message 23. 如果将上题第22小题中vehicle的成员函数message的定义改为:virtual void message(void) cout “Vehicle message n”;写出修改后的程序的运行结果。答: Vehicle message Car message Vehicle message Boat message 21.分析下列程序,写出其运行结果。#includeclassMyClasspublic: MyClass(inta)x=a; voidFun1()x+; voidFun2()x+=2; v

39、oidFun3()x+=3; voidPrint()coutx=xreal+=c.real,this-imag+=c.imag; return *this;Complex operator-(Complexc1,Complexc2) returnComplex( c1.real+c2.real,c1.imag+c2.imag _);26. 下面程序是一个含有比较运算符和赋值运算符重载的程序,请填空完成程序实现该程序。#include class pointprivate:float x,y;public:point(float xx=0,float yy=0) x=xx,y=yy ;point

40、(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:operator=(point p)if(x=p.getx()&(y=p.gety() )return 1;elsereturn 0;bool point:operator!=(point p)if(x!=.getx()&(y!

41、=.gety() )return 1;elseReturn 0;point& point:operator+=(point p)this-x+=p.getx();this-y+=p.gety();return *this void main()point p1(1,2),p2(3,4);p3(5,6);cout”p1=p2? ”(p1=p2)endl;cout”p1!=p2? ”(p1!=p2)endl;p3+=p1;cout”p3+=p1,p3: ”p3.getx()p3.gety()endl;四、程序设计题1.运算符重载:依据下列关于矩阵类的描述,写出、-等操作符重载的实现。/不考#inc

42、lude iostream.h#include stdlib.hclass 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 longr

43、aw*col;for(int i=0;im;i+)for(int j=0;jn;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()

44、CComplex()int getReal() return real;int getImage()return image;CComplex operator-(CComplex& c);/给出实现BOOL operator= =(CComplex& c); /给出实现BOOL operator!=(CComplex& c); /给出实现;3.依据CStudent类的描述以及main函数的实现,写出下划线指示的CStudent类及链表操作的相关函数。class CStudentprivate: int Math;protected: int Num;public: char *pName;

45、CStudent *next;public: CStudent(int num, char *name, int math); CStudent(CStudent& mStudent); /写出拷贝构造函数的实现 CStudent( ) Num=0; pName=NULL; Math=0; CStudent( ); /写出析构函数的实现 int getNum() return Num; int getMath( ) return Math; void AddTail(CStudent* newStudent);/写出表尾添加新节点的成员函数;CStudent:CStudent(int num,

46、char *name, int math) pName=new charstrlen(name)+1; if(pName!=0)strcpy(pName,name); Num= num; Math= math;CStudent:CStudent(CStudent& mStudent)/写出拷贝构造函数的实现CStudent:CStudent()/写出析构函数的实现 void CStudent:AddTail(CStudent* newStudent ) /写出成员函数的实现void main() CStudent *head,*pTemp; head=NULL; char name20; in

47、t num, math; while(1) cout请输入姓名(name; if(strcmp(name,000) coutnum;cout请输入成绩数学:math; else break; CStudent *newStudent=new CStudent(num,name, math); if(head= =NULL) head= newStudent ; newStudent-next=NULL; else head-AddTail(newStudent);4下列程序是关于CTriangle类的描述,请在空白处写出计算三角形边长的成员函数edgeLength()和计算三角形面积的成员函数

48、GetTriArea()的实现。#include #include class CTriangleprivate:int x1, y1,x2, y2,x3, y3;public:double mArea;private:double edgeLength(int x1,int y1,int x2,int y2);/写出计算边长的成员函数public:CTriangle( )x1=0;y1=0;x2=0;y2=0;x3=0;y3=0;mArea=0;CTriangle(int x1,int y1,int x2,int y2,int x3,int y3);CTriangle( )double GetTriArea( ); /写出计算面积的成员函数;24题老师的幻灯片上都有小说明一下:以上答案仅代表个人观点,仅供大家参考,问答题大家多多补充啊,尽量多写点。问答题我没写的老师说不考有错的请大家多多指教咯

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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