面向对象程序设计作业

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

郑州大学现代远程教育《面向对象程序设计》课程考

核要求

说明:本课程考核形式为提交作业,完成后请保存为WORD 2003版本格式的文档,登陆学习平台提交,并检查和确认提交成功(能够下载,并且内容无误即为提交成功)。

一.作业要求

1.请独立自主完成作业内容。

二.作业内容

一)、简答题:(每题 5 分,共30 分)

1.什么是抽象类?它有什么特点?

答:

抽象类与接口紧密相关,它们不能示例化,并且常常部分实现或根本不实现。

特点:

1、抽象类不能直接实例化

2、允许(但不要求)抽象类包含抽象成员。

3、抽象类不能被密封

2.C++中使用多态的前提条件是什么?

答:动态多态的前提条件:

1.通过调用虚函数实现多态

2.通过基类的指针或引用调用虚函数

3.什么是类?类与结构有和不同?

答:类是引用类型在堆上分配,类的实例进行赋值只是复制了引用,

都指向同一段实际对象分配的内存

不同:类有构造和析构函数,类可以继承和被继承

结构没有构造函数,但可以添加。结构没有析构函数,结构不可以继承自另一个结构或被继承,但和类一样可以继承自接口。

4.面向对象的特征有哪些?

答:封装,继承,多态

5. 简述this指针的含义是什么?

答:this指针是一个隐含于每一个成员函数中的特殊指针。它是一个指向正在被该成员函数操作的对象,也就是要操作该成员函数的对象。

6. 友元关系具有什么特点?

答:友元函数的特点是能够访问类中的私有成员的非成员函数。友元函数从语法上看,它与普通函数一样,即在定义上和调用上与普通函数一样。

二)、分析下面的代码,回答问题(每题 10 分,共 40 分)

1.分析下面的代码,指出其中的错误,说明理由并改正

class C {

public:

int fn1( int x ) {

dm = x ;

}

private:

int dm;

};

void main ( ) {

C c;

c.fn1(16 );

cout << c.dm << ‘\n’;

}

答://dm为私有变量,是不能通过对象直接访问的,正确的做法是添加一个public类型的方法,如public void Show(){cout<

2.下面代码的执行结果是什么?为什么?

class A{

int n;

public:

A() {};

A(int i){n=i;}

~A() { cout<<"n="<

};

class B

{

A a;

int m;

public:

B(int i,int j):a(i){m=j;}

~B(){cout<<"m="<

};

void main()

{

B b(1,2);

}

答:执行结果:

n=1

m=2

原因:b对象里包含一个A类的对象,b对象在析构时先调用A的析构函数,再调用B自身的析构函数

3.下面代码的执行结果是什么?为什么?

class Sample{

int n;

public:

Sample(){};

Sample(int i){n=i;};

Sample& operator=(Sample);

void disp(){cout<<"n="<

};

Sample & Sample::operator=(Sample s)

{

Sample::n=s.n;

return *this;

}

void main()

{Sample s1(10),s2;

s2=s1;

s2.disp();

}

答:结果:

n=10

Sample重载了赋值操作符,可以用Sample的一个对象去初使化另一个对象,s2对象被已经初使化的s1所初使化

4. 下面代码的执行结果是什么?为什么?

class A{

A(char *s) {cout<

~A(){};

};

class B:virtual public A

{

public:

B(char *s1,char*s2):A(s1)

{

cout<

}

};

class C:virtual public A

{

public:

C(char* s1,char* s2) : A(s1)

{

cout<

}

};

class D: public B, public C

{

public:

D(char *s1,char *s2,char *s3,char *s4):B(s1,s2),C(s1,s2),A(s1)

{

cout<

}

};

创建对象的语句: D d(“class A”,”class B”,”class C”,”class D”);执行结果是什么?为什么?

答:执行结果:

class A

class B

相关文档
最新文档