2005-2006-2学期 《面向对象方法》A卷

合集下载

[福建师范大学]《面向对象的程序设计》期末考试A卷

[福建师范大学]《面向对象的程序设计》期末考试A卷

▆■■■■■■■■■■■■福建师范大学网络与继续教育学院《面向对象的程序设计》期末考试A卷姓名:专业:学号:学习中心:一、单项单选题 (共25题,每题2分,共50分)1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 251、以下对部署图说法不正确的是()。

A.部署图有主要建模元素是构件B.使用部署图可以显示运行时系统的结构,同时还传达构成应用程序的硬件和软件的配置的部署方式C.从部署图中,可以了解到软件与硬件之间物理关系及处理节点的组件分布情况D.部署图是用来显示系统中软件和硬件的物理结构2、组件图用于对系统的静态实现视图建模,这种视图主要支持系统部件的配置管理,通常可以分为三种方式来完成,下面哪种不是其中之一()。

A.对源代码建模B.对事物建模C.对数据库建模D.对可执行文件建模3、关于面向对象方法的优点,下列不正确的叙述是()。

A.与人类习惯的思维方法比较一致B.可重用性好C.以数据操作为中心D.可维护性好4、类和接口的关系类似于下面哪种类型的关系()。

A.关联(association)和聚集(aggregation)B.关联(association)和组合(composition)C.脚本(scenario)和用例(use case)D.包(Package)和子系统(subsystem)5、UML通过图形化的表示机制从多个侧面对系统的分析和设计模型进行刻画,其中()包括构件图,它描述软件系统中各组成构件,构件的内部结构以及构件之间的依赖关系。

A.行为视图B.结构视图C.构件视图D.用例视图6、行为类模式使用()在类间分派行为。

A.接口B.继承机制C.对象组合D.委托7、通常对象有很多属性,下面仅能在对象内部访问的属性可见性限制是()。

A.公有的(public)B.受保护的(protected)C.友员(friendly)D.私有的(private)8、下面不属于创建型模式的有()。

浙大C++2005~2006春浙江大学考试答答案和评分标准

浙大C++2005~2006春浙江大学考试答答案和评分标准

浙⼤C++2005~2006春浙江⼤学考试答答案和评分标准浙江⼤学2005–2006学年_春_季学期《⾯向对象程序设计》课程期末考试试卷开课学院:计算机学院,考试形式:闭卷考试时间:_2006_年_4_⽉_18_⽇,所需时间: 120 分钟,任课教师_________ 考⽣姓名: _____学号:专业: ________1. Write the output of the code below(20%):每题4分1)int aa1=53,aa2=69;void f(int a1,int &a2){a2=a1;a1+=a2;cout << aa1 << aa2 << endl; //看清楚题⽬aa2 -= 7;a2++;}void main(){f(aa1,aa2);cout << aa1 << aa2 <}535353472) class A{static int m; //careint n;public:A(int m,int n){this->m=m;this->n=n;}Print(){ cout << m <<"---" << n << endl;}};int A::m; //改错时候注意A a2(5,6);a1.Print();a2.Print();}5---45---63)char a['z'];for (char i='a';i<='z';i++)a[i] = 'A'+i-'a';cout << a['e'] << endl;for (char i='a';i<='z';i++)a[i] = '1'+i-'a';cout << a['e'] << endl;E54)#includeusing namespace std;class A {int i;public:A():i(10) { cout << "A() " <virtual ~A() { cout << "~A() " << "\t"; } virtual void f() { i+=11; cout << "A::f() " < void g() { i+=12; cout << "A::g() "< };class B : public A {int i;public:B():i(20) { cout << "B() " <~B() { cout << "~B() " << "\t"; }void f() { i+=22; cout << "B::f() " <void g() { i+=12; cout << "B::g() "<{return B();}int main(){A* p = new B();p->f();cout <A a;B b = gen();a = b;a.f();cout <b.g();delete p;return 0;}A() 10 A::f() 21 B() 20 B::f() 42 B::f() 64A() 10 A::f() 21 A() 10 A::f() 21 B() 20 B::f() 42 A::f() 32 B::g() 54 ~B() ~A() ~B() ~A() ~A()此题答案不要求tab的对齐,但是如果存在换⾏错误(多余的或缺少的),所有的换⾏错误合计扣1分5)void main(){int m = 555;int n = 666;int &k = m;k++;cout << m <<”----“ << n << endl;k = n;k++;cout << m <<”----“ << n << endl;}556----666667----666D1、In C++ Language,function prototype doesn’t identify ( )A. The return type of the function.B. The number of arguments of the functionC. The type of arguments of the function.D. The functionality of the functionB 2、In C++ program, objects communicate each other by ( )A. InheritanceB. Calling member functionsC. EncapsulationD. Function overloadingB 3、For an arbitrary class,the number of destructor function can’t be bigger than ( )A. 0B. 1C. 2D. 3C 4、 Suppose a class is defined without any keywords such as public, private and protected,all members default to: ( )A. publicB. protectedC. privateD. staticC 5、About inline function, which statement is correct? ( )A. When the program is executed, inline function will insert the object code to every place where this function is called.B. When the program is compiled, inline function will insert the object code to every place where this function is called.C. Inline function must be defined inside a class.D. Inline function must be defined outside a class with keyword “inline”.B 6、During public inheritance, which statement is incorrect concerning the base class objects and the derived class objects? ( )A. Derived class objects can be assigned to base class objects.B. Derived class objects can initialize base class references.C. Derived class objects can access the members of base class.D. The addresses of derived class objects can be assigned to base class pointers.C 7、For the class definition:class A{public:};class B: public A{public:void func1( ){cout<< ″ class B func 1 ″ <virtual void func2( ){cout<< ″ class B func 2 ″ <};Which statement is correct? ( )A. Both A::func2( ) and B::func1( ) are virtual functionsB. Both A::func2( ) and B::func1( ) are not virtual functionsC. B::func1( ) is virtual function, while A::func2( ) is not virtual functionD. B::func1( ) is not virtual function, while A::func2( ) is virtual function3. Please correct the following programs(point out the errors and correct them)(15%) 1) 6分,每错2分class A{protected:static int k;int m;public:};int A::k;class B : public A{int n;public:static void F(int k){this->A::k = k;}void F2(int m){this->m = m;}};void main(){B b1,b2;b2.F2(5);}2)2分char a[3];const char *const ptr = a;const char c = 'a';ptr = &c3) 2分class base{...public:virtual void f(void)=0;virtual void g(void)=0;}class derived: public base{...public:virtual void f(void);virtual void g(void);};derived d;4) 5分,前3错各1分,最后⼀题错2分(基本正确给⼀分),class A {int *m_ip;public:A(int *ip = NULL){if(ip){m_ip = new int[5];::memcpy(m_ip,ip,sizeof(int)*5);}elsem_ip = NULL;~A(){delete m_ip; //改成 delete [] m_ip更好}A operator+(const A &a) const { // (1)(2)A temp(m_ip);for (int i=0; i<5; i++)temp.m_ip[i] += a.m_ip[i];return temp;}const A &operator=(const A &a){ // (3)if(a.m_ip){m_ip = new int[5];::memcpy(m_ip,a.m_ip,sizeof(int)*5);}elsem_ip = NULL;return *this;}friend ostream operator<<(ostream &,const A &); };ostream operator<<(ostream &out ,const A &a); // (4) {out << “(“ ;for (int i=0;i<4;i++)out << a.m_ip[i] << “,”;return out << a.m_ip[5] << “)”;}// Suppose the following code is correctvoid main(){const int k[5]={3,5,6,2,1};const A a1(k),a2(k);A a3(k);a3 = a1+a2;cout << a3 << endl;4、Fill in the blanks(30%)每格2分1)The function template MaxMin() can find out the max and min of a two dimension array,row is first dimension of length and col is second dimension of length . #includetemplate void MaxMin(T* array,int row,int col){T max = array[0],min = array[0];for(_int i=0 ;ifor( int j=0 ;j{if( maxmax = array[i*row+j];if( min > array[i*col+j] )min = array[i*row+j];}cout << "max=" << max << endl;cout << "min=" << min << endl;}void main(){int ai[2][3]={{8,10,2},{14,4,6}};MaxMin( (int*)ai, 2, 3 );}2) Please fill in the suitable code to make the program results 60。

面向对象程序设计(JAVA)期末考试考试卷(A卷)

面向对象程序设计(JAVA)期末考试考试卷(A卷)

课程代码:座位号:大学20 -20 学年度第二学期期末考试《面向对象程序设计》试卷: 学号: 专业:学院: 班级:20 年月日一、单选题(10小题,共10分)1.下列选项中,用于在定义子类时声明父类名的关键字是【】A.interface B. package C. extends D. class2.在以下哪种情况下可以获得缺省构造器? 【】A.当作任何类的定义时 B.当类没有其它构造器时C.当定义至少一个构造器的时 D.从不需要3.如果局部变量和成员变量同名,如何在局部变量作用域引用成员变量?【】 A.不能引用,必须改名,使它们的名称不相同B.在成员变量前加this,使用this访问该成员变量C.在成员变量前加super,使用super访问该成员变量D.不影响,系统可以自己区分4.在异常处理中,如释放资源、关闭文件、关闭数据库等由哪个子句来完成【】A.try子句B.catch子句 C.finally子句 D.throw子句5.下面哪个流类属于面向字符的输入流【】A.BufferedWriter B.FileInputStream C.ObjectInputStream D.InputStreamReader6.在Java中,由Java编译器自动导入,而无需在程序中用import导入的包是【】。

A.java.applet B.java.awt C.java.util D.ng7.下面程序定义了一个类,关于该类说确的是【】Abstract class abstractClass{……}A. 该类能调用new abstractClass(),方法实例化为一个对象B. 该类不能被继承C. 该类的方法都不能被重载D. 以上说法都不对8.已知有下面类的说明:public class X5_1_1 extends x{private float f =10.6f;int i=16;static int si=10;public static void main(String[] args) {X5_1_1 x=new X5_1_1();}}在main()方法中,下面哪条语句的用法是正确的?【】A.x.f B.this.si C .X5_1_1.i D.X5_1_1.f9.下列说法中,错误的一项是【】A.Thread类中没有定义run()方法 B.可以通过继承Thread类来创建线程C.Runnable接口中定义了run()方法 D.可以通过实现Runnable接口创建线程10.当一个Statement对象要执行一个查询类的SQL语句,调用的方法是【】A. executeQueryB.executeC. executeUpdatemit二、填空题(10小题,共10分)1.Java应用程序中有多个类时,java命令后的类名必须是包含了___________方法的那个类的名字。

面向对象程序设计试卷及答案

面向对象程序设计试卷及答案

考试试卷A(答案)面向对象程序设计注意事项:1. 请考生按要求在试卷装订线内填写、学号和年级专业。

2. 请仔细阅读各种题目的答复要求,在规定的位置填写答案。

3. 不要在试卷上乱写乱画,不要在装订线内填写无关的内容。

4. 总分值100分,考试时间为120分钟。

一.单项选择(本大题共10小题,每题3分,共30分)1. C#中每个int类型的变量占用〔B 〕个字节的内存。

〔A〕8 〔B〕4 〔C〕2 〔D〕12. 面向对象的特点是〔A 〕〔A〕封装、继承、多态〔B〕抽象、封装、多态〔C〕抽象、继承、封装〔D〕抽象、多态、重载3. C#控制台程序的主入口点是〔C 〕〔A〕Page_Load函数〔B〕Run函数〔C〕Main函数〔D〕Form_Load函数4. 引用类型存储在〔B 〕中。

〔A〕堆栈〔B〕堆内存〔C〕队列〔D〕列表5. 在C#中,表示一个字符串的变量应使用以下哪条语句定义〔B 〕〔A〕CString str 〔B〕string str〔C〕Dim str as string 〔D〕char *str6.在中,用来与数据源建立连接的对象是〔A 〕。

〔A〕Connection对象〔B〕Command对象〔C〕DataAdapter对象〔D〕DataSet对象7. 在类的定义中,类的〔 B 〕描述了该类的对象的行为特征。

〔A〕类名〔B〕方法〔C〕所属的名字空间〔D〕私有域8. 如果未显式赋值,则将整型值〔 B 〕赋给枚举中的第一个元素。

〔A〕1 〔B〕0 〔C〕2 〔D〕39. float类型的值可以隐式转换成〔 C 〕类型的值而保持值不被改变。

〔A〕char 〔B〕long 〔C〕double 〔D〕int10. 在C#中,假设Class1是一个类,而IExample 是一个接口,下面的〔 A 〕类声明是正确的。

〔A 〕class Employee: Class1, IExample〔B 〕class Employee: IExample, Class1〔C 〕class Employee- Class1, IExample〔D 〕class Employee: Class1/IExample二.判断题 (本大题共5小题,每题3分,共15分)1. C#中子类可以继承多个基类,也可以继承一个接口。

通信06 面向对象程序设计 考试参考答案(A卷)

通信06 面向对象程序设计 考试参考答案(A卷)
char Sex;
public:
int GetNum() { return Num;};
int GetAge() { return Age;};
Student(int Num0=1001, string Name0="张三", int Age0=20,char Sex0='1')
{
Num = Num0;
五、理解问答题(8分)
1.(3分,评分标准:前一份为1分,后一份为2分)
称为:虚函数。
作用:可以通过基类指针或引用来访问基类和派生类中的同名函数。
2.写出程序运行的结果。(3分,评分标准:正确给3分,格式不对扣1分)
25
10
3.(2分,评分标准:前一份为1分,后一份结果为1分)
程序能运行,其运行结果为:
}
int main()
{
Student s1,s2(1002,"李四",21,'1');
if (s1.GetAge()>s2.GetAge())
{
s1.display();
s2.display();
}
else
{
s2.display();
s1.display();
}
return 0;
}
2.答:三种继承的差异为:
(a)公用继承:基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。(2分)
(b)私有继承:基类的公用成员和保护成员在派生类中成了私有成员。其私有成员仍为基类私有。(3分)
(c)受保护的继承:基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有。(3分)

2004级C++面向对象程序设计试题A参考答案

2004级C++面向对象程序设计试题A参考答案
第 4页 共 4 页
{ hitpoint-=harm; if(hitpoint<0) hitpoint=0; } int GetHP() const {return hitpoint;} int GetDemage() const {return demage;} int GetDefense() const {return defense;} protected: int hitpoint; int demage; int defense; }; bool Monster::fight(Monster & other) { while(true) { attack(other); if(other.GetHP()<=0) return true; other.attack(*this); if(hitpoint<=0) return false; } }
一、单选题(共 10 分,每题 1 分) 1. 已知 f1 和 f2 是同一类中的两个成员函数,若 f1 的实现代码体内不能调用 f2,则最可能 的情况是: (本题有点问题,D 的情况也可能出现,如 f1 是常成员函数,而 f2 不是) (A) f1 和 f2 都是静态函数 (B) f1 是静态的,f2 不是 (C) f1 不是静态的,f2 是静态的 (D) f1 和 f2 都不是静态函数 2. 一个对象所占的内存空间中可以保存下面哪类数据? (A) 静态数据成员 (B) 内联函数代码 (C) 所有成员函数的入口地址 (D) 虚函数表的入口地址 3.下面关于 new 和 delete 操作符的说法,哪个是不正确的: (A) 使用 new 操作符,可以动态分配全局堆中的内存资源。 (B) 用 new 申请的数组,必须用 delete[] 释放。 (C) 用 new 申请的空间,即使不调用 delete 释放掉,当程序结束时也会自动释放掉。 (D) 执行语句 A * p=new A[100];时,类 A 的构造函数会被调用 100 次。 4. 下列哪种函数可以是虚函数: (A) 自定义的构造函数 (B) 拷贝构造函数 (C) 静态成员函数 (D) 析构函数 5.C++的最小编译单位是: (A) 工程中每个.cpp 和.h 文件 (B) 工程中每个.cpp 文件 (C) 工程中每个.h 文件 (D) 工程中所有文件 6.下面表达式中不可能作为左值(赋值运算符左侧)的是: (A) a=b (B) *p (C) f(a,b) (D) &a 7.在实现函数 A& f(A & obj) 时,下面的哪一个表达式可以出现在 return 语句中? (A) new A( ) (B) obj (C) &obj (D) new A(obj) 8.判断类 A 的两个对象 a1 与 a2 是否是同一个对象的方法是: (A) 利用调试器,查看 a1 与 a2 各成员数据的值是否相等 (B) 重载 == 运算符,用它来判断各成员数据的值是否相等。 (C) 判断这两个对象的地址值是否相等。 (D) 比较创建时使用的构造函数的实参是否相同。 9.已知 obj 是一个对象,下面哪一个表达式是不可能出现的? (A) obj.100 (B) !obj (C) obj++ (D) obj,100

面向对象程序设计(JAVA)期末考试试卷(A卷)

面向对象程序设计(JAVA)期末考试试卷(A卷)
7。如果在子类中想使用被子类隐藏得父类得成员变量或方法可以使用关键字____________,使用本类中被局部变量隐藏得成员变量使用关键字____________.
8。若子类对父类中得同名同参方法进行重新定义,我们称子类___________了父类得同名方法.
9.Java中用类创建一个对象包括对象得声明与为对象____________两个步骤。
D。不影响,系统可以自己区分
4.在异常处理中,如释放资源、关闭文件、关闭数据库等由哪个子句来完成【】
A.try子句B.catch子句C.finally子句D.throw子句
5.下面哪个流类属于面向字符得输入流【】
A.BufferedWriterB。C.ObjectInputStreamD。InputStreamReader
ﻩStringd ="Javaprogram、”;
ﻩvoid show(){
super、show();
ﻩSystem、out、println("ClassB:a=” + a + "\td=" + d);
ﻩ}
publicstatic void main(String args[]){ Ab=new B();b、show();}
int m=list、get(k);
System、out、printf(”%3d”,m);

}

程序得输出结果就是:
4.classSpeak{
ﻩpublicvoidhello(){
System、out、println("Hello!");

}பைடு நூலகம்
public class test{
ﻩpublicstatic void main(Stringargs[]){

06春VFP试卷A

06春VFP试卷A

山东财政学院2005—2006学年第二学期期末考试《计算机基础2》试卷(A )(考试时间120分钟)学院班级___________ 学号_______________ 姓名_____________注意:请将第一题答案填涂在答题卡上,做在试卷上无效。

其它答案做在答题纸的指定位置上。

一、单项选择题(每小题1分,共40分)1.在关系运算中,查找满足一定条件的元组运算称之为_________。

A)复制B)选择C)投影D)关联2.数据库、数据库系统、数据库管理系统这三者之间的关系是________。

A) 数据库系统包含数据库和数据库管理系统B) 数据库管理系统包含数据库和数据库系统C) 数据库包含数据库系统和数据库管理系统D) 数据库系统就是数据库,也就是数据库管理系统3.数据模型是将概念模型中的实体及实体间的联系表示成便于计算机处理的一种形式。

数据模型一般有关系模型、层次模型和_________。

A)实体集B)E-R模型C)网状模型D)实体模型4.用户起动VFP后,若要退出VFP回到Windows环境,可在命令窗口输入________。

A) Quit B) Exit C) Close D)Close All5.在关系理论中,把能够唯一地确定一个元组的属性或属性组合称为________。

A)索引码B)关键字C)域D)外码6.与.Not. (n1<=60 .And. n1>=18)等价的条件是________。

A) n1>60.Or.n1<18 B) n1>60.And.n1<18C) n1<60.Or.n1>18 C) n1<60.And.n1>187.有如下赋值语句,结果为“大家好”的表达式是_________。

A=“你好”B=“大家”A) B+At(A,1) B) B+Right(A,1) C) B+ Left(A,3,4) D) B+Right(A,2)8.关于Visual FoxPro的变量,下面说法中正确的是_________。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2005-2006-2学期《面向对象方法》A卷一.单项选择(本题共10小题,每题2分,共20分)1. 在下面几个元素中,是面向对象的要素的是(D)A.内联B.引用C. 函数D.继承2.下列关于构造函数的描述中,错误的是( D)A.构造函数名与类名相同B.构造函数在定义类对象时自动执行C.构造函数无返回类型D.构造函数不可以重载3.对于类定义中的成员,其默认访问权限为(C )A.public B. protected C.private D. static4.定义析构函数时,应该注意( C )A.其名与类名完全相同B.返回类型是 void 类型C.无形参,也不可重载D.函数体中必须有 delete 语句5.以下关于类的静态成员的描述正确的是(B )A.静态成员是在类中声明为const的成员B.静态数据成员的初始化必须在类外进行。

C.不可以通过对象访问类的静态成员。

D.类的静态成员与类的普通成员没有任何区别6.友元所使用的关键字为(B )A.operator B.friend C.const D.static7.实现运行时的多态性用( D) 。

A. 重载函数B. 构造函数C. 析构函数D. 虚函数8. 假定要对类AB定义*号操作符重载成员函数,实现两个AB类对象的乘法,并返回相加结果,则该成员函数的声明语句为( B )。

A. AB operator*(AB & a , AB & b)B. AB operator*(AB & a)C. operator*(AB a)D. AB & operator*( )9. cout 是( A )类的对象。

A.ostreamB.istreamC.stdinD.stdout10.假定XY为一个类,则该类的拷贝构造函数的声明语句为( C )A.XY &( XY x) B. XY (XY x) C.XY (const XY &) D. XY (XY * x)二.判断题(本题共5小题,每小题2分,共10分)1.派生类是从基类派生出来的,它不能作为基类派生其他类( F )2.析构函数可以是虚函数(T )3.main函数一定是程序第一个执行的函数( F)4.一个类只能多重继承两个类( F)5.一个抽象类的派生类不一定是具体类(T )三.填空题(本题共5小题,每空1分,共10分)1.假定AB为一个类,则执行“AB a[10];”语句时,系统自动调用该类的构造函数的次数为。

2.程序的内存通常分为、、、四个区。

3.异常的工作原理:用框定可能出现问题的语句块,用抛出异常,用捕获异常。

4.含有纯虚函数的类称为。

5.在C++函数中,可用return语句带回一个值。

如果有多个返回值,可用等带回。

1.102. 数据区、代码区、栈区、堆区3. try throw catch4. 抽象类5. 引用/指针四.简答题(本题共4小题,每题5分,共20分)1.若程序员没有为类定义拷贝构造函数,则编译器将自动生成一个默认的拷贝构造函数,它可能会产生什么问题?答:默认拷贝构造函数只完成对象的数据成员之间的位拷贝,即浅拷贝,如果对象的数据成员包括指向堆空间的指针,就不能使用这种拷贝方式,此时必须自定义拷贝构造函数,为创建的对象分配堆空间。

2. 说出四种C++的类中的默认类成员函数,各默认成员函数都完成什么功能?答:构造函数,初始化对象的数据成员;析构函数,系统做对象撤销后的工作;拷贝构造函数,初始化一个对象时,完成对象的数据成员之间的位拷贝(浅拷贝);赋值运算符,初始化后,完成对象的数据成员之间的位拷贝(浅拷贝)。

3.说出下面程序的功能,它是函数模板还是模板函数?template <class Type>void WE(Type a[],Type b[],int n){for (int i=0; i<n; i++)b[n-i-1]=a[i];}答:功能是将数组a中的内容以逆序存储到数组b中;是函数模板。

4. 简述构造函数执行顺序(包含类类型数据成员和基类情况)?启动构造函数,分配数据成员的空间,执行基类的构造函数的函数体,执行类类型数据成员的构造函数的函数体,执行自己构造函数的函数体。

五.程序阅读题(本题共3小题,第一小题6分,后两题各7分,共20分)1.#include<iostream.h>class A{public :A(int aa = 0,int bb = 0){a=aa; b=bb;cout <<a<<” “<<b<<endl;}~A(){cout << ”destructing ” << a << “ “ << b <<endl;}private:int a,b;};void function(A a){cout << “in function ” << endl;}void main(){A x,y(2,3);Function(y);}1.0 02 3in functiondestructing 2 3destructing 2 3destructing 0 02.#include <iostream.h>#include<string.h>class Teacher{public :Teacher (char *pname){strcpy(m_StrName,pname);cout<<”teacher’s name is ”<< m_StrName <<endl;}~Teacher(){cout << “destructing teacher ” << “ “ << m_StrName << endl;}protected:char m_StrName[30];};class Student{public :Student (char * sName,char *tname):t(tname){strcpy(m_StrName,sName);cout<<”Constructing student ”<< m_StrName<<endl;}protected:char m_StrName[20];Teacher t;};void main( ){Student s1(“Robet”,”Kate”);Student s2 (“John”,”Kitty”);cout << “end of main function ” << endl;}2. teacher’s name is KateConstructing student Robetteacher’s name is KittyConstructing student Johnend of main functiondestructing teacher Kittydestructing teacher Kate3.#include <iostream.h>class Vehicle{public:Vehicle(int wh){m_nWheels = wh;cout << “the vehicle has ” << m_nWheels << “wheels” <<endl; }void display(){cout << “display Vehicle” << endl;}private:int m_nWheels};class Car : public Vehicle{public:Car(int wh,int pnum):Vehicle(wh){m_pPassNum = pnum;cout << “the car has ” << m_pPassNum << “passenger” << endl; }void display(){cout << “display Car” << endl;}private:int m_nPassNum;}void main(){Car c(4,5);c.display();Vehilce v(8);v.display();Vehicle &v = c;v.display();}3. the vehicle has 5 wheelsthe car has 4 passengerdisplay Carthe Vehicle has 8 wheelsdisplay Vehicledisplay Vehicle六.程序设计题(本题共2小题,每小题10分,共20分)1.编写类People 的构造函数、析构函数、拷贝构造函数以及输出函数。

已知类People的声明部分为:class People{public:People(char *pname); // 构造函数People(const People &p); // 拷贝构造函数~ People(); // 析构函数void display();private:char *m_pStrName;};程序的主函数如下:void main(){People p1(“John”);People p2 = “Kate”;People p3 = p1;p1.display();p2.display();p3.display();}执行结果为:JohnKateJohndistructiong Johndistructiong Katedistructiong John请采用类外定义方法编写People的上述4 个成员函数。

1.People::People(char *pname){m_pStrName = new char[strlen(pname)+1];strcpy(m_pStrName,pname);}People::People (const People &p){m_pStrName = new char[strlen(p.m_pStrName)+1];strcpy(m_pStrName,p.m_pStrName);}People::~ People(){delete[] m_pStrName;cout << “destructing ” << m_pStrName << endl;}void People::display(){cout << m_pStrName << endl;}2.某设计院有两类职员,经理Manager和设计人员Designer,Manager和Designer 类都是Employee类的派生类。

相关文档
最新文档