C++面向对象程序设计习题 类与对象
- 格式:doc
- 大小:81.00 KB
- 文档页数:14
c面向对象程序设计课后习题面向对象程序设计是一种以对象为基本单位的编程范式,它强调数据和行为的封装、继承和多态性。
以下是一些面向对象程序设计的课后习题,旨在帮助学生巩固和深化对面向对象概念的理解。
习题一:封装的实现1. 定义一个类 `Person`,包含私有属性 `name` 和 `age`。
2. 实现公共方法 `getName()` 和 `setName(String name)` 来获取和设置 `name` 属性。
3. 实现公共方法 `getAge()` 和 `setAge(int age)` 来获取和设置`age` 属性。
4. 添加一个构造器,允许在创建 `Person` 对象时初始化 `name` 和`age`。
习题二:继承的应用1. 定义一个基类 `Vehicle`,包含属性 `speed` 和方法 `move()`.2. 创建一个派生类 `Car`,继承自 `Vehicle`,添加属性 `wheels` 和 `color`.3. 重写 `move()` 方法,以反映汽车的移动特性。
4. 添加一个构造器,允许初始化 `Car` 对象的所有属性。
习题三:多态性的使用1. 定义一个接口 `Animal`,包含一个抽象方法 `makeSound()`.2. 创建几个实现类,如 `Dog`,`Cat`,`Bird`,它们都实现了`Animal` 接口。
3. 为每个类实现 `makeSound()` 方法,以产生不同的声音。
4. 编写一个测试类,创建 `Animal` 类型的数组,包含不同种类的动物对象,并调用 `makeSound()` 方法。
习题四:抽象类的使用1. 定义一个抽象类 `Shape`,包含抽象方法 `calculateArea()`.2. 创建几个具体类,如 `Circle`,`Rectangle`,`Triangle`,它们继承自 `Shape` 并实现 `calculateArea()` 方法。
面向对象程序设计模拟题一、简答题:1. 什么是对象?什么是对象的事件和方法?试列举几个常用的事件和方法?答:对象是代码和数据的组合,可以作为一个单位来处理。
对象可以使应用程序的一部分,也可以是整个应用程序。
对象事件是对象可以识别的动作,即窗体、控件和其他对象可以识别的动作。
常用的事件有Click事件、Paint事件、Load事件等。
方法是对象要执行的动作,常见的有Clear、AddIRem、RemoveITem等。
2.VB有几种类型的表达式?请举例说明。
答:VB有5中类型的表达式,它们是算术表达式(例2*Pi*r*r)、字符串表达式(例“欢迎您”)、日期型表达式(例#11/22/98)、关系表达式(”abc”>”abcd”)和布尔表达式(2<=4AND6>3)。
二、填空题:1.单选按钮用于建立一组多选一的选项供用户选择,即在这些选项中,用户一次只能选择其中的一个选项选项,并且必须选择其中一个选项。
同时,当一个单选钮被选中时,其他选项自动关闭。
2.列表框是以列表形式显示一系列项目和信息,用户可通过单击其中某一项来选择的自己所需项目或信息。
在Windows中,使用列表框输出数据是保证数据标准化的重要手段,它是一个重要的输出控件。
在工具栏中它是一个标着带有滚动条的列表图案的按钮。
3.MsgBox 函数用来在对话框中显示消息,等待用户单击按钮,并返回一个整数,告诉程序用户单击了哪一个按钮。
4.在VB中有三种形式的数组,静态数组、动态的数组和控件数组。
静态数组就是指数组元素的个数在程序运行时保持不变,动态数组是指数组中的元素个数在程序运行时可以变化的数组,控件数组是使用VB中某些常用控件创建的数组。
使用静态数组、动态数组前必须要先声明,才能在程序中使用。
5.VB提供了图形控件,如Shape控件和Line控件。
它们提供一定的绘图样式,虽比较简单,但是使用非常方便,不需要编写代码,只要设置相应的属性即可。
C++面向对象程序设计模拟试题一一、单项选择题(本大题共10小题,每小题2分,共201.说明虚函数的关键字是()。
A. inlinevirtual C. define D. static2.在每个C++程序中都必须包含有这样一个函数,该函数的函数名为()。
A. mainB. MAINC. nameD. function 3.cout是某个类的标准对象的引用,该类是()。
A. ostream B. istream C. stdout D. stdin4.如果在类外有函数调用CPoint::func();则函数func()是类CPoint的()。
A. 私有静态成员函数B. 公有非静态成员函数C. 公有静态成员函数 B. 友元函数5. 如果class类中的所有成员在定义时都没有使用关键字public、private或protected,则所有成员缺省定义为()。
A. publicB. protectedC. private D.static6.一个类的所有对象共享的是()。
A. 私有数据成员 B. 公有数据成员 C. 保护数据成员 D. 静态数据成员7.动态联编所支持的多态性称为()。
A. 虚函数 B. 继承C. 编译时多态性D. 运行时多态性8.定义类模板时要使用关键字()。
A. const B. newC. deleteD. template9.对虚基类的定义()。
A. 不需要使用虚函数 B. 必须使用虚函数C. 必须使用privatD. 必须使用public10.类型转换函数()。
A. 不能带有参数 B. 只能带一个参数 C. 只能带2个参数D. 只能带3个参数二、判断正误题(本大题共6小题,每小题2分,共12分)1.虚函数在基类和派生类之间定义,且要求函数原型完全一致。
()2.抽象类可以用来直接创建对象。
()3.内联函数中可以出现递归语句。
()4.模板类与类模板的意义完全相同。
()5.常对象只能调用常成员函数。
c++类与对象题目1、什么是类和对象?它们在C++中有什么作用?答:类是定义对象的模板,它描述了对象的数据成员和成员函数。
对象是根据类创建的实例,具有类定义的属性和行为。
类和对象是面向对象编程的基础。
2、创建一个C++类并定义它的成员变量和成员函数。
答:下面是一个简单的C++类示例,它有一个整数类型的成员变量和一个成员函数,该函数返回成员变量的值:cclass MyClass {public:int myVariable;int getMyVariable() {return myVariable;}};3、创建一个对象并使用它调用类的成员函数。
答:下面是一个示例代码,创建一个MyClass类的对象,并使用该对象调用getMyVariable()成员函数:cMyClass obj; // 创建一个MyClass 类的对象int x = obj.getMyVariable(); // 使用对象调用成员函数4、什么是构造函数?如何在C++类中定义构造函数?答:构造函数是一个特殊的成员函数,它会在创建对象时自动调用。
它用于初始化对象的成员变量。
在C++类中,可以使用关键字“构造函数”来定义构造函数。
例如:cclass MyClass {public:int myVariable;MyClass(int value) { // 定义构造函数myVariable = value;}};5、什么是析构函数?如何在C++类中定义析构函数?答:析构函数是一个特殊的成员函数,它会在删除对象时自动调用。
它用于释放对象使用的资源。
在C++类中,可以使用关键字“析构函数”来定义析构函数。
例如:cclass MyClass {public:~MyClass() { // 定义析构函数// 释放对象使用的资源}};。
C++语言与面向对象的设计第1至13章习题参考答案习题1参考答案1 用最简练的语言解释下列词汇在面向对象程序设计中的含义:对象,类,方法,接口,消息,封装,继承,服务答:对象是客观世界中的实体在计算机中的表示。
是一组数据成员和方法成员的封装体。
是类类型的实例。
类是一种抽象数据类型。
是一组对象共性的描述。
方法是在一个类中定义的过程或函数,实现类的功能的代码。
接口是对象封装体向外部公布的一组具有公有属性的方法。
是从对象外部与对象通信的唯一途径。
消息是对象之间的通信机制,对象的客户通过接口方法调用请求对象服务称为消息调用。
对象之间通过消息传递,互相协调、配合,共同实现软件系统的整体设计目标。
消息的载体是对象提供的公有方法,即对象的接口。
封装有以下两重含义:首先,是指将描述客观实体数据特征的数据和方法特征的代码组织在一起,作为一个整体,并为该整体命名标识,以区别于其它数据和程序代码。
其次,通过对该整体内成员的访问属性的规定,使一部分成员的隐藏起来,对于封装体外成为不可见的,同时使另一部分成员对外开放,作为与外部交流的接口。
继承是面向对象程序设计方法中描述的两个类之间一种增量包含关系。
这两个类具有一种父子关系,子类通过为父类添加新的成员而创建。
继承提供了利用一个类的代码创建新类的重用方法。
继承关系也是对客观世界分类层次关系的一种模拟。
服务即对象通过公有方法向外部提供功能。
1. 2 试列举过程化、模块化、结构化等程序设计方法的主要特点。
面向对象程序设计是如何包容和吸收其它几种程序设计方法的有用成分的。
答:过程化程序设计方法以过程或函数作为程序的基本构造单位。
侧重于算法表达和过程间参数传递的组织。
模块化程序设计方法以独立编译的源程序模块作为大型应用程序的基本组织单位。
注重于应用程序的开发管理。
包括系统开发的任务分解、模块间通信管理、可重用代码库的组织、由不同语言生成的目标模块的连接等方面。
结构化等程序设计方法以单入口单出口的可嵌套基本控制结构作为程序构造单位。
c 面向对象程序设计教程习题答案C面向对象程序设计教程习题答案在学习C面向对象程序设计的过程中,习题答案是非常重要的一部分。
通过练习习题,可以加深对知识点的理解,提高编程能力。
下面我们就来看一些常见的C面向对象程序设计习题及其答案。
1. 什么是面向对象程序设计?面向对象程序设计是一种程序设计范式,它以对象为中心,通过封装、继承和多态等特性来组织和管理代码。
面向对象程序设计可以提高代码的可维护性和可重用性,是现代软件开发中非常重要的一部分。
2. 什么是类和对象?类是一种抽象的数据类型,它描述了一类对象的共同特征和行为。
对象是类的实例,它具体描述了一个具体的实体。
在C面向对象程序设计中,类和对象是非常重要的概念。
3. 请编写一个简单的类和对象的例子。
```c#include <stdio.h>// 定义一个简单的类class Person {public:int age;char name[20];void display() {printf("Name: %s, Age: %d\n", name, age);}};int main() {// 创建一个对象Person p;p.age = 25;strcpy(, "Alice");p.display();return 0;}```4. 什么是封装?封装是面向对象程序设计中的一种重要特性,它将数据和行为封装在一个类中,对外部隐藏了内部的实现细节。
封装可以保护数据的安全性,同时提供了简单的接口供外部访问。
5. 请编写一个简单的封装例子。
```c#include <stdio.h>// 定义一个简单的类class Circle {private:double radius;public:void setRadius(double r) {radius = r;}double getArea() {return 3.14 * radius * radius;}};int main() {// 创建一个对象Circle c;c.setRadius(5.0);printf("Area: %f\n", c.getArea());return 0;}```以上就是一些常见的C面向对象程序设计习题及其答案。
第6章面向对象程序设计一. 选择题1.下面有关类和对象的说法中, 不对的的是【】。
A) 类是系统提供的一种数据类型B) 对象是类的实例C) 类和对象的关系是抽象和具体的关系D) 任何一个对象只能属于一个具体的类2. 面向对象的特点重要概括为【】。
A) 可分解性、可组合型性和可分类性B) 继承性、封装性和多态性C) 封装性、易维护性、可扩展性和可通用性D) 抽象性、继承性和封装性3. 要使一个类能被同一命名空间中的其他类访问, 但不能被这个命名空间以外的类访问, 该类可以【】。
A) 不使用任何修饰符B) 使用private修饰符C) 使用public修饰符D) 使用internal修饰符4. 在C#中, 【】访问修饰符修饰的字段只能由当前程序集访问。
A) private B) public C) protected D) internal5. 类的字段和方法的默认访问修饰符是【】。
A) public B) private C) protected D) internal6. 下列关于构造函数的描述中, 不对的的是【】。
A) 构造函数中, 不可以包含return语句B) 一个类只能有一个构造函数C) 实例构造函数在生成类实例时被自动调用D) 用户可以定义无参构造函数7. 下列关于构造函数的描述中, 【】是对的的。
A) 构造函数名必须与类名相同B) 构造函数不可以重载C) 构造函数不能带参数D) 构造函数可以声明返回类型8. 下列的【】不是构造函数的特性。
A) 构造函数的函数名与类名相同B) 构造函数可以重载C) 构造函数可以带有参数D) 可以指定构造函数的返回值类型9. 类ClassA有一个名为M1的方法, 在程序中有如下一段代码, 假设该段代码是可以执行的, 则声明M1方法时一定使用了【】修饰符。
ClassA Aobj=new ClassA();ClassA.M1();A) public B) public static C) private D) virtual10. 在C#中, 从属性的读写特性上来进行分类, 可以划分为以下3种, 除了【】。
一、填空题(每空1分,共14分)1、观看以下程序:class point{public:void show() {cout<<”point”<<endl;}};void main(){point p1;point *p;p=&p1;_______________//通过对象p1访问show函数______________//通过指针p访问show函数}2、在C++类中可以包含______________、______________和______________三种具有不同访问控制权的成员。
3、定义类时,在类头中将使用关键字_____________来表示类定义的开始。
4、如果一个类中至少有一个纯虚函数,则该类称为________________。
5、C++类的组成包括数据成员和______________,友元_____(是、不是)该类的成员函数。
6、友员函数是用关键字____________修饰的非成员函数。
7、若有:int i;int &j=i;i=10;j=i+1;则i=__________,j=__________。
8、 new的功能是____________________,delete的功能是____________________。
二、选择题(每小题1.5分,共30分)1、下列特性中不是面向对象程序设计语言所特有的是()。
(A)数据封装(B)继承(C)多态性(D)模板2、()是给变量取一个别名,它引入了变量的同意词。
(A)指针(B)引用(C)枚举(D)结构3、类成员的访问权限中,()只能被本类的成员函数和其友元函数访问。
(A)share (B)public (C)private (D)protected4、关于构造函数,下列说法不正确的是()。
(A)构造函数名字和类名相同(B)构造函数在创建对象时自动执行(C)构造函数无任何函数返回类型(D)构造函数有且只有一个5、派生类可以访问其基类的()。
1.下列哪个选项最准确地描述了面向对象编程中的“封装”概念?o A. 它允许一个类继承另一个类的属性和方法。
o B. 它是对象能够根据不同的调用者表现出不同行为的能力。
o C. 它指的是将数据和操作数据的方法绑定在一个对象中,隐藏对象的内部状态。
o D. 它是将复杂系统分割为更小、更可管理的模块的过程。
答案:C解析:封装是将对象的属性和行为包装在一起,控制对内部状态的访问,从而增强数据安全性和降低代码耦合度。
2.在多态背景下,下列哪个场景示例了运行时多态性?o A. 重载构造函数创建不同类型的对象。
o B. 子类覆盖父类的方法,在运行时根据对象类型调用相应的方法。
o C. 定义一个类的多个实例,每个实例有不同的状态(如变量值)。
o D. 使用抽象类保证子类必须实现某些方法。
答案:B解析:运行时多态性主要体现在子类覆盖父类的方法,根据对象的实际类型在运行时动态选择要调用的方法。
3.哪个关键字在C++中用于实现继承?o A. finalo B. abstracto C. classo D. extends答案:C解析:在C++中,使用class关键字后跟冒号和基类名称来实现继承。
其他选项不是C++中的关键字或不用于继承。
4.在面向对象编程中,抽象类的主要作用是什么?o A. 它不能被实例化,因此不适合创建对象。
o B. 它提供了一个模板,包含了一些可以被继承的抽象方法,要求子类实现这些方法。
o C. 它用于封装数据,而不提供任何行为。
o D. 它用于封装具体类的实现细节,提高代码的复用性。
答案:B解析:抽象类可以包含抽象方法,这些方法没有实现,目的是为了要求子类必须提供这些方法的具体实现,从而达到代码的结构化和模块化。
5.C++中,命名空间的主要目的是什么?o A. 提高性能,减少编译时间。
o B. 使代码更易于阅读和理解。
o C. 实现代码的多态性。
o D. 避免全局命名冲突,组织代码结构。
答案:D解析:命名空间在C++中用于组织代码,避免全局命名冲突,使代码更加模块化。
《C++面向对象程序设计》习题解答陈腊梅目录第一章面向对象程序设计概述.............................................................. 错误!未定义书签。
第二章对C语言的基础扩充................................................................... 错误!未定义书签。
第三章类和对象的初步探讨 ................................................................. 错误!未定义书签。
第四章类和对象的进一步解析.............................................................. 错误!未定义书签。
第五章在对象中使用运算符—运算符重载.......................................... 错误!未定义书签。
第六章继承与派生 (2)第七章多态性与虚函数 (2)第一章面向对象程序设计概述一、选择题二、填空题1、多态性2、成员函数3、抽象4、处理这些数据的操作或处理这些数据的函数5、面向对象分析、面向对象分析、面向对象编程、对象对象测试、面向对象维护第二章对C语言的基础扩充二、程序阅读题1答案a=639,b=78,c=122答案a=5,b=8a=8,b=53答案104答案x=20.6 y=5 z=Ax=216.34 y=5 z=Ax=216.34 y=2 z=Ax=216.34 y=2 z=E5答案ic=11fc=7.82ic=5fc=2.15第三章类和对象的初步探讨一、选择题二、填空题1 数据成员、成员函数2 private 、protected 、public3 指向对象的指针、对象的引用4 属性、行为、属性、行为5 对象、属性和操作这些属性的操作、对外隐藏四、程序改错题#include <iostream>using namespace std;class Clock{//public:void set_clock(void);void show_clock(void);//private:int hour;int minute;int second;};Clock clock;int main( ){clock.set_clock( );clock.show_clock ( );//return 0 ;}void Clock::set_clock(void){cin>>hour;cin>>minute;cin>>second;}void Clock::show_clock(void){cout<<hour<<":"<<minute<<":"<<second<<endl;}第四章类和对象的进一步解析二、填空题1 this2所有成员3友元类、友元函数4 friend5 程序编译、程序结束三、程序阅读题1答案Default constructor called.constructor called.0,06,86,8Destructor called.0,0Destructor called.2答案x!=y3答案Initalizing defaultInitalizing default0 0Destructor is activeDestructor is active4答案n=2,sum=2n=3,sum=5n=5,sum=105答案x=36答案x=1,y=2x=30,y=407答案1 2 3 4 4exit main3 2 1 08答案n=1009答案the student is:Li Huthe teacher is:Wang Ping10答案211答案1035,789.50412答案13答案constructing object:x=1第五章在对象中使用运算符—运算符重载二、程序完善题1(1)A A::operator+(A &b)(2){ A temp;temp.i = i+b.i;return temp; }三、程序阅读题1.答案n=4n=3232.答案c1=10 c2=20c1=100 c2=200c1=11 c2=21c1=100 c2=2003.答案1 2 4 7 11 16第六章派生与继承1 继承2 具体化、抽象3 公有继承、保护继承、私有继承4 子对象5 public(共有的)、protected(保护的)、不可访问6 protected(保护的)、protected(保护的)、不可访问的7 private(私有的)、private(私有的)、不可访问的8 二义性1.C++语言中,既允许单继承,又允许多继承。
类和对象(一)知识点:1.类与对象的概念,及两者的关系?2.类定义的格式,对象定义的格式,访问对象的成员的格式3.类中成员访问权限有哪几种,它们的特点?4.如何对对象进行初始化?5.构造函数与析构函数的特点,构造函数在哪些情况下被系统自动调用,析构函数什么情况下被调用;存在虚基类的派生类构造函数调用顺序?6.缺省构造函数的特点7.拷贝构造函数的功能与特点8.成员函数与内联函数的区别9.静态成员的概念与作用10.静态成员函数调用格式11.什么是友元,友元的作用12.作用域运算符的功能是什么?它的使用格式如何?13.满足成员函数重载的条件作业题一、选择填空1.在下列关键字中,用以说明类中公有成员的是( )。
A .public;B.private;C.protected;D.friend。
2.下列的各类函数中,( )不是类的成员函数。
A.构造函数;B.析构函数;C.友员函数;D.拷贝初始化构造函数。
3.作用域运算符的功能是( )。
A.标识作用域的级别的;B.指出作用域的范围的;C.给出作用域的大小的;D.标识某个成员是属于哪个类的。
4.( )是不可以作为该类的成员的。
A.自身类对象的指针;B.自身类的对象;C.自身类对象的引用;D.另一个类的对象。
5.( )不是构造函数的特征。
A.构造函数的函数名与类名相同;B.构造函数可以重载;C.构造函数可以重载设置缺省参数;D.构造函数必须指定类型说明。
6.( )是析构函数的特征。
A.一个类中能定义一个析构函数;B.析构函数名与类名不同;C.析构函数的定义只能在类体内;D.析构函数可以有一个或多个参数。
7.通常的拷贝初始化构造的参数是( )。
A.某个对象名;B.某个对象的成员名;C.某个对象的引用名;D.某个对象的指针名。
8.关于成员函数特征的下述描述中,( )是错误的。
A.成员函数一定是内联函数;B.成员函数可以重载;C.成员函数可以设置参数的缺省值;(只能一次)D.成员函数可以是静态的。
9.下述静态数据成员的特性,( )是错误的。
A.说明静态数据成员是前面要加修饰符STATIC;B.静态数据成员要类外进行初始化;C.引用静态数据成员时,要在静态数据成员名前加<类名>和作用域运算符;D.静态数据成员不是所有对象所公的。
10.友员的作用( )。
A.提高程序的运用效率;B.加强类的封装性;C.实现数据的隐藏性;D.增强成员函数的种类。
二、判断下列描述的正确性,对者打√,错者划×。
1.使用关键字class定义的类中缺省的访问权限是私有(private)的。
2.作用域运算符( ::)只能用来限定成员函数所属的类。
(数据成员所属的类)3.析构函数是一种函数体为空的成员函数。
4.析构函数和构造函数都不能重载。
5.说明或定义对象时,类名前面不需要加class关键字。
6.对象成员的表示与结构变量成员表示相同,使用运算符.或—>。
7.所谓私有成员是指只有类中所提供的成员函数才能直接使用它们,任何类以外的函数对它们的访问都是非法的。
8.某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。
9.可以在类的构造函数中对静态数据成员进行初始化。
(类体外)10.如果一个成员函数只存取一个类的静态数据成员,则可将该成员函数说明为静态成员函数。
三、分析下列程序的输出结果。
1.#include<iostream>class A{public:A();A(int i,int j);void print();private:int a,b;};A::A(){a=b=0;cout<<"Default constructor called.\n"; }A::A(int I,int j){a=i;b=j;cout<<" Constructor called.\n";}void A::print(){cout<<"a="<<a<<",b="<<b<<endl; }void main(){A m,n(4,8);m.print();n.print();}Default constructor calledConstructor calleda=0,b=0a=4,b=82.#include<iostream.h>class Count{public:Count () { count++; }static int HM() { return count; }~Count( ) { count--; }private:static int count;};int Count::count=100;void mian(){Count c1,c2,c3,c4;Cout<<Count::HM()<<endl;}104四、按下列要求编写程序。
在一个程序中,实现如下要求:(1)构造函数重载;(2)成员函数设置缺省参数;(3)有一个友元函数;(4)有一个静态函数;(5)使用不同的构造函数创建不同对象。
类和对象(二)练习题1.指向对象的指针如何定义2.对象指针作函数参数与对象作函数参数有何不同?3.什么是this指针?它有何作用?4.什么是对象数组?他如何定义?它如何赋值?5.指向对象数组的指针如何定义?如何赋值?6.使用new和delete创建和删除动态数组的格式如何?7.C++中类型的自动隐式转换有哪些规则?8.构造函数都具有类型转换函数的功能吗?9.什么是转换函数?定义时应注意哪些问题?作业题一、选择填空1.已知:类A中一个成员函数说明如下:void Set(A&a);其中,A&a的含义是()A.指向类A的指针为a;B.将a的地址值赋给变量Set;C.a是类A的对象引用,用来作函数Set()的形参;D.变量A与a按位相与作为函数Set()的参数。
2.下列关于对象数组的描述中,()是错的。
A.对象数组的下标是从0开始的;B.对象数组的数组名是一个常量指针;C.对象数组的每个元素是同一个类的对象;D.对象数组只能赋初值,不能被赋值。
3.下列定义中,()是定义指向数组的指针 p.A.int *p[5];B.int (*p)[5];C.(int *)p[5];D.int *p[]。
4.关于new 运算符的下列描述中,( )是错误的。
A.它可以用来动态创建对象的对象数组;B.使用它创建的对象或对象数组可以使用运算符delete删除;C.使用它创建对象时要调用构造函数;D.使用它创建对象数组时必须指定初始值。
5.关于delete运算符的下列描述中,( )是错误的。
A.它必须用于new返回的指针;B.它也试用于空指针;C.对一个指针可以使用多次该运算符;D.指针名前只用一对方括号符,不管所删除数组的维数。
6.具有转换函数功能的构造函数,应该是( )。
A.不带参数的构造函数;B.带有一个参数的构造函数;C.带有两个以上参数的构造函数;D.缺省构造函数。
二、判断下列描述是否正确,对者划√,错者划×。
1.指向对象的指针和指向类的成员的指针在表示形式上是不相同的。
F2.已知:m是类A的对象,n是类A的公有数据成员,p是指向类A 中n成员的指针。
下列两种表示是等价的:m.n和m .*p T3.指向对象的指针与对象都可以作函数参数,但是使用前者比后者好些。
T4.对象引用作函数参数比用对象之中更方便些。
T5.对象数组的元素可以是不同类的对象。
F6.对象数组既可以赋初值又可以被赋值。
T7.指向数组的指针不一定必须指向数组的首元素。
F 8.转换函数不是成员函数,它是用来进行强制类型转换的。
F(不是改为是)三、分析下列程序的输出结果。
1.#include <iosteam.h>class A{public:A( );A(int I,int j);&A( );void Set(int i,int j) {a=I;b=j;} private:int a,b;};A::A(){a=0;b=0;cout<<”Default constructor called.\n”;}A::A(int i,int j){a=I;b=j;cout<<”Constructor:a=”<<a<<”,b=”<<b<<endl;}A::~A(){cout<<”Destructor called. a=”<<a<<”,b=”<<b<<endl; }void main(){cout<<”Starting1… \n”;A a[3];for(int i=0;i<3;i++)a[i].Set(2*i+1,(i+1)*2);cout<<”Ending1…\n”;cout<<”starting2…\n”;A b[3]={A(1,2),A(3,4),A(5,6)};cout<<”Ending2…\n”;}2.#include<iostream.h>class B{int x,y;public:B();B(int i);B(int i,int j);~B();void print();};B::B(){x=y=0;cout<<”Default constructor called.\n”; }B::B(int i){x=i;y=0;cout<<”Construc tor1 called.\n”;}B::B(int i,int j){x=i;y=j;cout<<”Constructor2 called.\n”;}B::~B(){cout<<”Destructor called.\n”;}void B::print(){cout<<”x=”<<x<<”,y=”<<y<<endl; }void main(){B *ptr;ptr=new B[3];ptr[0]=B();ptr[1]=B(5);ptr[2]=B(2,3);for(int i=0;i<3;i++)ptr[I].print();delete[] ptr;}3.#include<iostream.h>class A{public:A(int i=0) {m=i;cout<<”constructor called.”<<m<<”\n”;}void Set(int i) {m=i;}void Print() const {cout<<m<<endl;}~A() {cout<< “destructor called.”<<m<<”\n”;} private:int m;};void fun(const A&c){c.Print();}void main(){fun(5);}。