华科面向对象的程序设计题库

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

1、编译时的多态性通过__重载__函数实现。

2、面向对象的四个基本特性是_抽象__、__多态性_、__继承性__和_封装性_。

3. 假定AB为一个类,则执行“AB a(2), b[4],*p[4];”语句时调用该类构造函数的次数为__5__。

4.要实现动态联编必须通过对象指针或引用来调用_虚函数_实现。

5.在函数前面用_ inline _保留字修饰时,则表示该函数表为内联函数。

6. 如果将一个对象说明为常对象,则通过该对象只能调用它的__常成员__函数。

7、非成员函数应声明为类的__友元___函数才能访问这个类的private成员。

8、在用class定义一个类时,数据成员和成员函数的默认访问权限是_ 私有____。

9、运算符重载函数可能是类的_友元_函数,也可以是类的_成员_函数,还可以是普通函数。

10、__转换构造函数__函数可以将一个指定的数据转换为类的对象,_类型转换函数_函数实现类的对象转换成其它类型的数据。

11、静态多态性是通过函数重载、运算符重载、模板来实现。

12、假定AB为一个类,则执行“AB a(10), b[1],*p[10];”语句时调用该类构造函数的次数为 1 。

13、C++类成员函数有 public 、 private 、 protected 三种类型。

14、如果将一个对象说明为常对象,则通过该对象只能调用它的常成员函数。

15、为使外部函数可访问类的私有成员,需将该函数声明为该类的友元函数。

16、类B是由类A以保护方式派生的,则类A中公有访问属性的数据成员在类B中的访问属性为保护。

17、+、=、[]、->等四种运算符中,可采用友元函数重载的运算符是 + 。

18、抽象类是指具有纯虚函数的类,它只能作为基类来使用。

19、类B是由类A以保护方式派生的,则类A中私有访问属性的数据成员在类B中的访问属性为不可访

问。

1、什么是类模板,类模板声明的一般形式是什么?

答案:

类模板是对一批仅仅成员数据类型不同的类的抽象,程序员只要为这一批类所组成的整个类家族创建一个类模板,给出一套程序代码,就可以用来生成多种具体的类,(这类可以看作是类模板的实例),从而大大提高编程的效率。

定义类模板的一般形式是:

template <类型名参数名1,类型名参数名2,…>

class 类名

{

类声明体

};

2、有哪几种继承方式?每种方式的派生类对基类成员的继承性如何?

答案:

继承方式包括:public、private、protected。

3、简述运算符重载的实现方式有哪几种?给出对应的声明语法形式。

答案:

(1)类外定义的运算符重载函数

格式为:

friend <返回类型> operator (<类型> 参数1,<类型> 参数2)

{ <函数体> }

(2)成员运算符重载函数

<返回类型> <类名>::operator (<类型> 参数)

{ <函数体> }

4、什么是this指针? 它的主要作用是什么?

答案:

this指针:隐含在非静态成员函数中的特殊指针,它是当前正在调用此成员函数的对象的指针。

作用:主要是用于保证访问不能跨界和用于区分不同的对象。成员函数对成员变量的引用实际是通过this指针访问的,也就是说:成员变量this->成员变量;另外,如果成员函数需要访问当前对象,也可以通过this指针,*this就是当前对象。

5、什么是多继承?多继承时,构造函数和析构函数执行顺序是怎样的?

答案:

多继承是指派生类具有多个基类,派生类与每个基类之间的关系仍可看作是一个单继承。

派生类构造函数的执行顺序是先执行所有基类的构造函数(顺序按照定义派生类时指定的各基类顺序),再执行派生类的构造函数,析构函数执行顺序,与构造函数完全相反。

三、写出程序运行结果

1、

#include

using namespace std;

class B1{

int b1;

public:

B1(int i)

{ b1 = i; cout <<"constructor B1."<

{ cout<

};

class B2{

int b2;

public:

B2(int i)

{ b2 = i; cout<<"constructor B2."<

{ cout<

};

class B3{

int b3;

public:

B3(int i)

{ b3 = i; cout<<"constructor B3."<

int getb3()

{ return b3; }

};

class A:public B2, B1{

int a; B3 bb;

public:

A(int i,int j, int k, int l):B1(i),bb(k),B2(j)

{ a=l;cout<<"constructor A."<

void print()

{

B1::print();B2::print();

cout<

}

};

int main()

{

A aa(1,2,3,4);

aa.print();

return 0;

}

相关文档
最新文档