C++题目作业14

HZAU-专业C++作业14(继承与多态性)

判断题

1. 派生类的构造函数的初始化列表中如果不写对基类构造函数的调用,则自动调用基类的拷贝构造函数。f

2. 在多继承情况下,派生类的构造函数中基类构造函数的执行顺序取决于定义派生类时所指定的各基类的顺序。T

3. 一个派生类不能作为基类被别的派生类继承。F

4. 派生类的继承方式中有两种:公有继承和私有继承。F

5. 在私有继承中, 基类中只有公有成员对派生类是可见的。F

6. 构造函数可以被继承。F

7. 在公有继承中,基类的成员在派生类中都可以直接使用。F

8. 解决多继承下二义性问题的方法之一是使用作用域运算符。T

9. 派生类中至少包含了它的所有基类的成员, 在这些成员中可能有的是不可访问。T

10. 虚函数是支持编译时的多态性。T

11. 在C++中,要实现动态联编,可以使用基类指针调用虚函数。 t

12. 在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数返回值部分相同。 f

13. 抽象类只能作为基类使用,其纯虚函数的实现由派生类来完成。 t

14. 运算符重载只可以是类的成员函数和友元函数,不可以是普通函数。t

15. 静态联编和动态联编都是在编译时进行的,二者的区别仅是前者对非虚函数,后者对虚函数。t

16. 动态联编指的是在运行期间来选择不同类的虚函数t 。

17. 一个抽象类中可以包含有多个纯虚函数,一个派生类中也可以包含多个虚函数。 t

18. 如果派生类没有实现虚函数,那么它将使用他的基类的虚函数。t

19. 含有纯虚函数的类称为抽象类,与抽象类相对应的是具体类。t

20. 析构函数可以说明为虚函数,而构造函数说明为虚函数没有意义t 。

选择题

1.

C++语言建立类族是通过( )实现的。

A. 类的嵌套 B. 虚函数 C. 类的继承 D. 抽象类 2.

下列对基类和派生类关系的描述中,错误的是( )。

A. 派生类是基类的具体化 B. 派生类是基类的子集 C. 派生类是基类定义的延续 D. 派生类是基类的组合 3.

下列对派生类的描述中,错误的是( )。

A. 一个派生类可以作为另一个派生类的基类 B. 派生类至少有一个基类

C. 派生类的缺省继承方式是private

D. 派生类只继承了基类的公有成员和保护成员 4.

下列说法中错误的是( )。

A. 公有继承时基类中的public 成员在派生类中仍是public 的 B. 公有继承时基类中的private 成员在派生类中仍是private 的 C. 私有继承时基类中的public 成员在派生类中是private 的 D. 保护继承时基类中的public 成员在派生类中是protected 的 5.

下面叙述错误的是( )。

A. 对基类成员的访问能力在private 派生类中和public 派生类中是相同的 B. 基类的private 成员在public 派生类中不可访问

C. 基类中的public 成员在protected 派生类中是protected 的 D. 基类中的public 成员在protected 派生类中仍然是public 的 6.

多继承的构造顺序可分为如下4步。

① 所有非虚基类的构造函数按照它们被继承的顺序构造; ②所有虚基类的构造函数按照它们被继承的顺序构造; ③ 所有子对象的构造函数按照它们声明的顺序构造; ④ 派生类自己的构造函数体;

这4个步骤的正确顺序是( )。

A. ④③①② B. ②④③① C. ②①③④ D. ③④①② 7.

下列虚基类的声明中,正确的是( )。

A. class virtual B: public A B. virtual class B: public A C. class B: public A virtual D. class B: virtual class A 8.

下面( )的叙述不符合赋值兼容规则。

A. 派生类的对象可以赋值给基类的对象 B. 基类的对象可以赋值给派生类的对象

C. 派生类的对象可以初始化基类的引用

D. 派生类的对象的地址可以赋值给指向基类的指针 9.

对于虚函数定义的调用( )。

A. 一定使用动态联编 B. 一定使用静态联编 C. 必须使用动态联编 D. 不一定使用动态联编 10.

下列描述中,( )是抽象类的特征。

A. 可以说明虚函数 B. 可以定义友元函数 C. 可以进行构造函数 D. 不能说明其对象 11.

关于纯虚函数和抽象类的描述中,错误的是( )。

A. 纯虚函数是一种特殊的虚函数,它没有具体的实现 B. 抽象类是指具有纯虚函数的类

C. 一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类 D. 抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出 12.

如果一个类至少有一个纯虚函数,那么就称该类为( )。

A. 抽象类 B. 虚基类 C. 派生类 D. 以上都不对 13.

以下( )成员函数表示纯虚函数。

A. virtual int vf(int); B. void vf(int)=0; C. virtual void vf()=0; D. virtual void vf(int) { } 14.

一个类的层次结构中,定义有虚函数,并且都是公有继承,在下列情况下,实现动态联编的是( )。

A. 使用类的对象调用虚函数

B. 使用类名限定调用虚函数,其格式如下::: C. 使用构造函数调用虚函数 D. 使用成员函数调用虚函数 15.

下列关于动态联编的描述中,错误的是( )。

A. 动态联编是函数联编的一种方式,它是在运行时来选择联编函数的 B. 动态联编又可称为动态多态性,它是C++语言中多态性的一种重要形式 C. 函数重载和运算符重载都属于动态联编 D. 动态联编只是用来选择虚函数的

程序设计题

1. (5分)

点-圆类(虚函数)

题目描述

下面是点-圆类层次继承中的虚函数,请填空补充完成下列程序。 #include using namespace std; class Point {

float x,y; public: Point(){}

Point( (1) ){x=a;y=b;} (2) double area() {

return 0.0; } };

( 3 )double Pi=3.141593;

class Circle:public Point {

private:

double Radius; public:

Circle(double r) {

(4) ; }

virtual double area() {

return Pi*Radius*Radius; } };

int main() {

Circle c(1); cout

输入描述

输出描述

输入样例

输出样例

3.14159

2. (5分)

时间类相加

题目描述

下面是将加法运算符(+)重载为友元函数的应用,该运算符实现时间类的加法运算,请完成下列程序。 #include using namespace std; class angle {

(1)hours,mins,secs; public: angle(){}

(2)(int h,int m,int s) {

hours=h;mins=m;secs=s; }

void show() {

cout

(3) angle operator+(angle &p1,angle &p2) {

angle temp;

temp.secs=(p1.secs+p2.secs)%60;

temp.mins=((p1.secs+p2.secs)/60+p1.mins+p2.mins)%60; temp.hours=((p1.secs+p2.secs)/60+p1.mins+p2.mins)/60; (4) ;

return temp; } };

int main() {

angle a(12,2,53),b(15,2,54); a=a+b; a.show(); return 0; }

输入描述

输出描述

输入样例

输出样例

time is: 3:5:47

3. (5分)

虚函数实现多态性

题目描述

下面程序是虚函数实现多态性,请完成下列程序。 #include using namespace std; (1) pet {

public:

(2)void speak(){cout

class cat:public pet {

public:

virtual void speak(){cout

class dog:public pet {

public:

virtual (3) speak(){cout

int main() {

pet p; p.speak(); cat c; c.speak(); dog d; d.speak(); return 0; }

输入描述

输出描述

输入样例

输出样例

how does a pet speak? miao!miao! wang!wang!

4. (3分)

继承-虚函数

题目描述

在下面程序的横线处填上适当的内容,使程序执行后的输出结果为9SS9S 。 #include using namespace std; class A {

(1) a; public: A():a(9){}

(2) void print() const{coutclass B:public A {

char b; public:

B(){ (3);}

void print()const{cout

void show(A&x){x.print();} int main() {

A d1,*p; B d2; (4) ; d1.print(); d2.print(); p->print(); show(d1); show(d2); return 0; }

输入描述

输出描述

输入样例

输出样例

9SS9S

5. (3分)

虚函数-程序填空

题目描述

在下面程序的横线处填上适当的内容,使程序执行后的输出结果为25。 #include using namespace std; class base {

public: int n;

base((1)){n=x;}

virtual void set(int m){n=m;cout

class deriveA:public base {

public:

deriveA(int x):base(x){}

void set(int m){(2);cout

class deriveB:(3) base {

public:

deriveB(int x):base(x){}

void set(int m){n+=m;cout

int main() {

deriveA d1(1); deriveB d2(3); base *pbase;

pbase=&d1; pbase->set(1); pbase=&d2; (4) ; return 0; }

输入描述

输出描述

输入样例

输出样例

25

6. (5分)

汽车类

题目描述

一个汽车类Vehicle ,包含数据成员制造商manufacturer 、生产年份produce_year、价格price 。从vehicle. 类派生出小汽车类car ,car 类中新增加载客量passenger_load。请完成些列程序。 #include #include

using namespace std; class Vehicle {

protected:

string manufacturer; int produce_year,price; public:

Vehicle(string m,int pro,int pri)

{

manufacturer=m;

produce_year=pro;

(1) ;

}

void display()

{

cout

cout

cout

}

};

(2) :public Vehicle

{

private:

int passenger_load;

(3) :

Car(string m,int pro,int pri,int pa):Vehicle(m,pro,pri)

{

passenger_load=pa;

}

(4)

{

cout

Vehicle::display();

cout

}

};

int main()

{

Car c("yiqi",2005,100000,5);

c.display();

return 0;

}

输入描述

输出描述

输出样例

Car information:

manufacturer:yiqi

produce year:2005

price:100000

passenger load:5passengers

7. (4分)

基类指针与派生类对象

题目描述

通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。 #include

using namespace std;

(1)

{

public:

void print(){cout

};

class Derived:public Base

{

public:

void print(){cout

};

int main()

{

Derived* pd=new Derived();

Base*pb=pd;

pb->print();

(2) ;

delete pd;

return 0;

}

输出描述 略

输入样例 无

输出样例 BD

HZAU-专业C++作业14(继承与多态性)

判断题

1. 派生类的构造函数的初始化列表中如果不写对基类构造函数的调用,则自动调用基类的拷贝构造函数。f

2. 在多继承情况下,派生类的构造函数中基类构造函数的执行顺序取决于定义派生类时所指定的各基类的顺序。T

3. 一个派生类不能作为基类被别的派生类继承。F

4. 派生类的继承方式中有两种:公有继承和私有继承。F

5. 在私有继承中, 基类中只有公有成员对派生类是可见的。F

6. 构造函数可以被继承。F

7. 在公有继承中,基类的成员在派生类中都可以直接使用。F

8. 解决多继承下二义性问题的方法之一是使用作用域运算符。T

9. 派生类中至少包含了它的所有基类的成员, 在这些成员中可能有的是不可访问。T

10. 虚函数是支持编译时的多态性。T

11. 在C++中,要实现动态联编,可以使用基类指针调用虚函数。 t

12. 在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数返回值部分相同。 f

13. 抽象类只能作为基类使用,其纯虚函数的实现由派生类来完成。 t

14. 运算符重载只可以是类的成员函数和友元函数,不可以是普通函数。t

15. 静态联编和动态联编都是在编译时进行的,二者的区别仅是前者对非虚函数,后者对虚函数。t

16. 动态联编指的是在运行期间来选择不同类的虚函数t 。

17. 一个抽象类中可以包含有多个纯虚函数,一个派生类中也可以包含多个虚函数。 t

18. 如果派生类没有实现虚函数,那么它将使用他的基类的虚函数。t

19. 含有纯虚函数的类称为抽象类,与抽象类相对应的是具体类。t

20. 析构函数可以说明为虚函数,而构造函数说明为虚函数没有意义t 。

选择题

1.

C++语言建立类族是通过( )实现的。

A. 类的嵌套 B. 虚函数 C. 类的继承 D. 抽象类 2.

下列对基类和派生类关系的描述中,错误的是( )。

A. 派生类是基类的具体化 B. 派生类是基类的子集 C. 派生类是基类定义的延续 D. 派生类是基类的组合 3.

下列对派生类的描述中,错误的是( )。

A. 一个派生类可以作为另一个派生类的基类 B. 派生类至少有一个基类

C. 派生类的缺省继承方式是private

D. 派生类只继承了基类的公有成员和保护成员 4.

下列说法中错误的是( )。

A. 公有继承时基类中的public 成员在派生类中仍是public 的 B. 公有继承时基类中的private 成员在派生类中仍是private 的 C. 私有继承时基类中的public 成员在派生类中是private 的 D. 保护继承时基类中的public 成员在派生类中是protected 的 5.

下面叙述错误的是( )。

A. 对基类成员的访问能力在private 派生类中和public 派生类中是相同的 B. 基类的private 成员在public 派生类中不可访问

C. 基类中的public 成员在protected 派生类中是protected 的 D. 基类中的public 成员在protected 派生类中仍然是public 的 6.

多继承的构造顺序可分为如下4步。

① 所有非虚基类的构造函数按照它们被继承的顺序构造; ②所有虚基类的构造函数按照它们被继承的顺序构造; ③ 所有子对象的构造函数按照它们声明的顺序构造; ④ 派生类自己的构造函数体;

这4个步骤的正确顺序是( )。

A. ④③①② B. ②④③① C. ②①③④ D. ③④①② 7.

下列虚基类的声明中,正确的是( )。

A. class virtual B: public A B. virtual class B: public A C. class B: public A virtual D. class B: virtual class A 8.

下面( )的叙述不符合赋值兼容规则。

A. 派生类的对象可以赋值给基类的对象 B. 基类的对象可以赋值给派生类的对象

C. 派生类的对象可以初始化基类的引用

D. 派生类的对象的地址可以赋值给指向基类的指针 9.

对于虚函数定义的调用( )。

A. 一定使用动态联编 B. 一定使用静态联编 C. 必须使用动态联编 D. 不一定使用动态联编 10.

下列描述中,( )是抽象类的特征。

A. 可以说明虚函数 B. 可以定义友元函数 C. 可以进行构造函数 D. 不能说明其对象 11.

关于纯虚函数和抽象类的描述中,错误的是( )。

A. 纯虚函数是一种特殊的虚函数,它没有具体的实现 B. 抽象类是指具有纯虚函数的类

C. 一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类 D. 抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出 12.

如果一个类至少有一个纯虚函数,那么就称该类为( )。

A. 抽象类 B. 虚基类 C. 派生类 D. 以上都不对 13.

以下( )成员函数表示纯虚函数。

A. virtual int vf(int); B. void vf(int)=0; C. virtual void vf()=0; D. virtual void vf(int) { } 14.

一个类的层次结构中,定义有虚函数,并且都是公有继承,在下列情况下,实现动态联编的是( )。

A. 使用类的对象调用虚函数

B. 使用类名限定调用虚函数,其格式如下::: C. 使用构造函数调用虚函数 D. 使用成员函数调用虚函数 15.

下列关于动态联编的描述中,错误的是( )。

A. 动态联编是函数联编的一种方式,它是在运行时来选择联编函数的 B. 动态联编又可称为动态多态性,它是C++语言中多态性的一种重要形式 C. 函数重载和运算符重载都属于动态联编 D. 动态联编只是用来选择虚函数的

程序设计题

1. (5分)

点-圆类(虚函数)

题目描述

下面是点-圆类层次继承中的虚函数,请填空补充完成下列程序。 #include using namespace std; class Point {

float x,y; public: Point(){}

Point( (1) ){x=a;y=b;} (2) double area() {

return 0.0; } };

( 3 )double Pi=3.141593;

class Circle:public Point {

private:

double Radius; public:

Circle(double r) {

(4) ; }

virtual double area() {

return Pi*Radius*Radius; } };

int main() {

Circle c(1); cout

输入描述

输出描述

输入样例

输出样例

3.14159

2. (5分)

时间类相加

题目描述

下面是将加法运算符(+)重载为友元函数的应用,该运算符实现时间类的加法运算,请完成下列程序。 #include using namespace std; class angle {

(1)hours,mins,secs; public: angle(){}

(2)(int h,int m,int s) {

hours=h;mins=m;secs=s; }

void show() {

cout

(3) angle operator+(angle &p1,angle &p2) {

angle temp;

temp.secs=(p1.secs+p2.secs)%60;

temp.mins=((p1.secs+p2.secs)/60+p1.mins+p2.mins)%60; temp.hours=((p1.secs+p2.secs)/60+p1.mins+p2.mins)/60; (4) ;

return temp; } };

int main() {

angle a(12,2,53),b(15,2,54); a=a+b; a.show(); return 0; }

输入描述

输出描述

输入样例

输出样例

time is: 3:5:47

3. (5分)

虚函数实现多态性

题目描述

下面程序是虚函数实现多态性,请完成下列程序。 #include using namespace std; (1) pet {

public:

(2)void speak(){cout

class cat:public pet {

public:

virtual void speak(){cout

class dog:public pet {

public:

virtual (3) speak(){cout

int main() {

pet p; p.speak(); cat c; c.speak(); dog d; d.speak(); return 0; }

输入描述

输出描述

输入样例

输出样例

how does a pet speak? miao!miao! wang!wang!

4. (3分)

继承-虚函数

题目描述

在下面程序的横线处填上适当的内容,使程序执行后的输出结果为9SS9S 。 #include using namespace std; class A {

(1) a; public: A():a(9){}

(2) void print() const{coutclass B:public A {

char b; public:

B(){ (3);}

void print()const{cout

void show(A&x){x.print();} int main() {

A d1,*p; B d2; (4) ; d1.print(); d2.print(); p->print(); show(d1); show(d2); return 0; }

输入描述

输出描述

输入样例

输出样例

9SS9S

5. (3分)

虚函数-程序填空

题目描述

在下面程序的横线处填上适当的内容,使程序执行后的输出结果为25。 #include using namespace std; class base {

public: int n;

base((1)){n=x;}

virtual void set(int m){n=m;cout

class deriveA:public base {

public:

deriveA(int x):base(x){}

void set(int m){(2);cout

class deriveB:(3) base {

public:

deriveB(int x):base(x){}

void set(int m){n+=m;cout

int main() {

deriveA d1(1); deriveB d2(3); base *pbase;

pbase=&d1; pbase->set(1); pbase=&d2; (4) ; return 0; }

输入描述

输出描述

输入样例

输出样例

25

6. (5分)

汽车类

题目描述

一个汽车类Vehicle ,包含数据成员制造商manufacturer 、生产年份produce_year、价格price 。从vehicle. 类派生出小汽车类car ,car 类中新增加载客量passenger_load。请完成些列程序。 #include #include

using namespace std; class Vehicle {

protected:

string manufacturer; int produce_year,price; public:

Vehicle(string m,int pro,int pri)

{

manufacturer=m;

produce_year=pro;

(1) ;

}

void display()

{

cout

cout

cout

}

};

(2) :public Vehicle

{

private:

int passenger_load;

(3) :

Car(string m,int pro,int pri,int pa):Vehicle(m,pro,pri)

{

passenger_load=pa;

}

(4)

{

cout

Vehicle::display();

cout

}

};

int main()

{

Car c("yiqi",2005,100000,5);

c.display();

return 0;

}

输入描述

输出描述

输出样例

Car information:

manufacturer:yiqi

produce year:2005

price:100000

passenger load:5passengers

7. (4分)

基类指针与派生类对象

题目描述

通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。 #include

using namespace std;

(1)

{

public:

void print(){cout

};

class Derived:public Base

{

public:

void print(){cout

};

int main()

{

Derived* pd=new Derived();

Base*pb=pd;

pb->print();

(2) ;

delete pd;

return 0;

}

输出描述 略

输入样例 无

输出样例 BD


相关文章

  • 09级计科专业毕业设计题目
  • 09级计算机科学与技术专业毕业设计题目指南 说明:1. 每个题目的选择人数最多不能超过2名同学,否则将退回重选.(如题目要求可多 人合作,则以题目要求为准),请各班级同学自行协调解决选题冲突问题. 2.学习委员上报题目请用EXCEL 表格, ...查看


  • C++课程设计任务书
  • <C++面向对象课程设计>任务书 一.课程设计目的与要求 1.课程设计目的 面向对象程序设计作为一门软件设计的课程,具有极强的实践性,必须使学生具备灵活应用理论知识的能力及面向对象程序设计技能.所以在<C++面向对象程序设 ...查看


  • ask笔试题目
  • 瀚海星云 - 同主题文章阅读 讨论区:Job 版主: wZhOu wqstar davyxun 回复本文 本讨论区 chord 121 381 31 364 本文: [转寄][转贴][删除][修改][回复][作者:chord][人气:262 ...查看


  • 科技写作科研(论文)选题题目名称参考
  • 科技写作科研(论文)选题题目名称参考 1. 基于Struts 的企业人力资源管理系统的设计与实现 2. 基于云计算的HIS 系统-挂号子系统的设计与开发 云平台下的HIS 系统,使用Java 或C++. 3. 基于云计算的HIS 系统-收费 ...查看


  • 数据结构A教学大纲
  • 数据结构A 教学大纲 (Data Structures A) 课程编号: 06311360 学 分: 5.0 学 时: 75 (其中:讲课学时:60 实验学时:0 上机学时:15) 先修课程:离散数学.程序设计基础.面向对象程序设计 适用专 ...查看


  • 小企业职工工资管理系统
  • <C++程序设计>实训报告 课题名称: 小企业职工工资管理系统 专 业: 软件开发 班 级: 软件101 学 号: 姓 名: 指导教师: 二0一一年一月七日 目 录 一.课程设计目的----------------------- ...查看


  • 高校学生综合测评管理系统的设计与实现说明书
  • 'i******************* 实践教学 ******************* 题 目:高校学生综合测评管理系统的设计与实现专业班级:姓 名:学 号:指导教师:成 绩:兰州理工大学 计算机与通信学院 2011年秋季学期 课程设 ...查看


  • 网易2016校招笔试题目
  • 网易2015校招-前端工程师(笔试题) 选择题 1.对于多关键字而言,那种文件组织方便而又高效() A.顺序文件 B.倒排文件 C.散列文件 D.B+树索引文件 2.以下哪些算法可用于遍历网络图() A.广度优先搜索 B.深度优先搜索 C. ...查看


  • 历年软考程序员试题分析
  • 历年软考程序员试题分析及2011年备考建议 程序员考试上午科目和下午科目的考试形式与考核内容已经趋于稳定,考生应紧扣考试大纲和指南,有针对性地进行学习. 1.程序员上午试题分析和备考建议 分析近几年程序员上午试题的考试内容,其知识点和分值分 ...查看


热门内容