欢迎来到天天文库
浏览记录
ID:12751420
大小:37.00 KB
页数:7页
时间:2018-07-18
《面向对象程序设计-朱勇》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《面向对象程序设计》1.什么是抽象类?它有什么特点?答:用abstract修饰的类是抽象类。 在C++中,含有纯虚拟函数的类称为抽象类,它不能生成对象。 抽象类是不完整的,并且它只能用作基类。其特点如下: 1、抽象类不能直接实例化,并且对抽象类使用new运算符是编译时错误。虽然一些变量和值在编译时的类型可以是抽象的,但是这样的变量和值必须或者为null,或者含有对非抽象类的实例的引用(此非抽象类是从抽象类派生的)。 2、允许(但不要求)抽象类包含抽象成员。 3、抽象类不能被密封。2.C++中使用多态的前提条件是什么
2、?答:C++重载、重写均是多态: 1)从语法上说:重载必须函数名和返回值一致,且参数顺序、个数和类型(有一个不一样),而重写必须函数名和返回值一致,且参数顺序、个数和类型(必须全一样)。2)重载可以用于一个类自身内部,也可以用于继承类;重写只能用于继承类关系中。3)重载一般用于需要在某些参数允许被缺省的情况下完成(可省略参数的函数)。重写用于“工厂模式”以及其衍生产品中发挥作用。3.什么是类?类与结构有和不同?答:类是一种复杂的数据类型,它是将不同类型的数据和与这些数据相关的操作封装在一起的集合体。在c++中类和结构除了关键
3、字不同之外只有两点区别:(1)class中默认的成员访问权限是private的,而struct中则是public的。 (2)从class继承默认是private继承,而从struct继承默认是public继承。 除此这外无任何区别。4.面向对象的特征有哪些? 答:面向对象的四个基本特征是:封装、继承、抽象、多态。5.简述this指针的含义是什么?答:this指针是一个隐含于每一个类的成员函数中的特殊指针(包括析构函数和构造函数),它用于指向正在被成员函数操作的对象。不过,在一般的程序设计中不直接用它的,this是一个
4、指针变量,因此在成员函数中,可以使用*this来表示正在调用该函数的对象。6.友元关系具有什么特点?二、分析下面的代码,回答问题(每题10分,共40分)1.分析下面的代码,指出其中的错误,说明理由并改正classC{public:intfn1(intx){dm=x;}private:intdm;};voidmain(){Cc;c.fn1(16);cout<5、endl;}然后利用对象c调用Show(),c.Show();2.下面代码的执行结果是什么?为什么?classA{intn;public:A(){};A(inti){n=i;}~A(){cout<<"n="<6、函数3.下面代码的执行结果是什么?为什么?classSample{intn;public:Sample(){};Sample(inti){n=i;};Sample&operator=(Sample);voiddisp(){cout<<"n="<7、用Sample的一个对象去初使化另一个对象,s2对象被已经初使化的s1所初使化4.下面代码的执行结果是什么?为什么?classA{public:A(char*s){cout<8、publicC{public:D(char*s1,char*s2,char*s3,char*s4):B(s1,s2),C(s1,s2),A(s1){cout<
5、endl;}然后利用对象c调用Show(),c.Show();2.下面代码的执行结果是什么?为什么?classA{intn;public:A(){};A(inti){n=i;}~A(){cout<<"n="<6、函数3.下面代码的执行结果是什么?为什么?classSample{intn;public:Sample(){};Sample(inti){n=i;};Sample&operator=(Sample);voiddisp(){cout<<"n="<7、用Sample的一个对象去初使化另一个对象,s2对象被已经初使化的s1所初使化4.下面代码的执行结果是什么?为什么?classA{public:A(char*s){cout<8、publicC{public:D(char*s1,char*s2,char*s3,char*s4):B(s1,s2),C(s1,s2),A(s1){cout<
6、函数3.下面代码的执行结果是什么?为什么?classSample{intn;public:Sample(){};Sample(inti){n=i;};Sample&operator=(Sample);voiddisp(){cout<<"n="<7、用Sample的一个对象去初使化另一个对象,s2对象被已经初使化的s1所初使化4.下面代码的执行结果是什么?为什么?classA{public:A(char*s){cout<8、publicC{public:D(char*s1,char*s2,char*s3,char*s4):B(s1,s2),C(s1,s2),A(s1){cout<
7、用Sample的一个对象去初使化另一个对象,s2对象被已经初使化的s1所初使化4.下面代码的执行结果是什么?为什么?classA{public:A(char*s){cout<
8、publicC{public:D(char*s1,char*s2,char*s3,char*s4):B(s1,s2),C(s1,s2),A(s1){cout<
此文档下载收益归作者所有