面向对象程序设计作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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