继承与派生(小题)

单选题:

2-1
一个类的私有成员 ( B )
A.只能被该类的成员函数访问
B.只能被该类的成员函数和友元函数访问
C.只能被该类的成员函数、友元函数和派生类访问
D.以上答案都不对

2-2
以下关于C++语言中继承的叙述中,错误的是( D )。
A.继承是父类和子类之间共享数据和方法的机制
B.继承定义了一种类与类之间的关系
C.继承关系中的子类将拥有父类的全部属性和方法
D.继承仅仅允许单继承,即不允许一个子类有多个父类

2-3
继承机制的作用是 ( C )
A.信息隐藏
B.数据封装
C.定义新类
D.数据抽象

2-4
在公有继承的情况下,在派生类中能够访问的基类成员包括 ( D )
A.公有成员
B.保护成员
C.公有成员、保护成员和私有成员
D.公有成员和保护成员

2-5
派生类继承基类的方式有 ( D )
A.public
B.private
C.protected
D.以上都对

2-6
在c++中,类之间的继承关系具有( C )。
A.自反性
B.对称性
C.传递性
D.反对称性

2-7
下列关于类的继承描述中,( D )是正确的。
A.派生类公有继承基类时,可以访问基类的所有数据成员,调用所有成员函数。
B.派生类也是基类,所以它们是等价的。
C.派生类对象不会建立基类的私有数据成员,所以不能访问基类的私有数据成员。
D.一个基类可以有多个派生类,一个派生类可以有多个基类。

2-8
下列有关继承和派生的叙述中,正确的是: ( D )
A.派生类不能访问通过私有继承的基类的保护成员
B.多继承的虚基类不能够实例化
C.如果基类没有默认构造函数,派生类就应当定义带形参的构造函数
D.类的的析构函数和构造函数都不能够被继承

2-9
下列程序的执行结果为 ( C )

#include <iostream>
using namespace std;

class A {
public:
    A() {     cout << "1";    }
    ~A() {    cout << "2";    }
};
class B: public A {
public:
    B() {    cout << "3";    }
    ~B() {    cout << "4";    }
};
int main() {
    B b;
    return 0;
}

A.1234
B.1324
C.1342
D.3142

2-10
下列关于派生类构造函数和析构函数的说法中,错误的是 ( D )
A.派生类的构造函数会隐含调用基类的构造函数
B.如果基类声明了带有形参表的构造函数,则派生类就应当声明构造函数
C.在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数
D.在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数

2-11
建立派生类对象时, 3种构造函数分别是a(基类的构造函数)、b(成员对象的构造函数)、c(派生类的构造函数),这3种构造函数的调用顺序为 ( A )
A.abc
B.acb
C.cab
D.cba

2-12
下面叙述不正确的是 ( A )
A.基类的保护成员在派生类中仍然是保护的成员
B.基类的保护成员在公有派生类中仍然是保护的
C.基类的保护成员在私有派生类中仍然是私有的
D.对基类成员的访问必须是无二义性

2-13
下列关于继承的描述中,错误的是( D )。
A.析构函数不能被继承
B.派生类是基类的组合
C.派生类的成员除了它自己的成员外,还包含了它的基类的成员
D.派生类中继承的基类成员的访问权限到派生类保持不变

2-14
下面关于类的继承与派生的程序,其输出结果是 ( C )

#include<iostream>
using namespace std;
class A 
{
public:
    A(){cout<<"A";}
};
class B
{
public:
    B(){cout<<"B";}
};
class C:public A
{
    B b;
public:
    C(){cout<<"C";}
};
int main(){
    C obj;
    return 0;
}

A.CBA
B.BAC
C.ACB
D.ABC

2-15
可以用p.a的形式访问派生类对象p的基类成员a, 其中a是 ( D )
A.私有继承的公有成员
B.公有继承的私有成员
C.公有继承的保护成员
D.公有继承的公有成员

2-16
下面关于类的继承与派生的程序,其输出结果是 ( B )

#include<iostream>
using namespace std;
class A {
public:
    A(int i) {    x = i;  }
    void dispa() {
        cout << x << ',';
    }
private:
    int x;
};
class B: public A {
public:
    B(int i) : A(i + 10) {
        x = i;
    }
    void dispb() {
        dispa();
        cout << x << endl;
    }
private:
    int x;
};
int main() {
    B b(2);
    b.dispb();
    return 0;
}

A.10,2
B.12,10
C.12,2
D.2,2

2-17
若obj是类D的对象,则下列语句中正确的是 ( D )

class B{
private: void fun1(){ }
protected: void fun2(){ }
public: void fun3(){ }
};
class D : public B {
protected: void fun4(){ }
};

A.obj.fun1();
B.obj.fun2();
C.obj.fun4();
D.obj.fun3();

2-18
下面关于继承和派生的构造函数和析构函数的程序,输出结果是 ( A )

#include<iostream>
using namespace std;
class AA {
public:
    AA() { cout << "A"; }
    ~AA() { cout << "a"; }
};
class BB: public AA {
    AA aa;
public:
    BB() { cout << "B"; }
    ~BB() { cout << "b"; }
};
int main() {
    BB bb;
    return 0;
}

A.AABaab
B.AABbaa
C.BAAaab
D.BAAbaa

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,这里是一道关于多重派生C++ 题目: 定义一个名为"Person"的基类,该包含公有成员变量"Name"和"Age",并具有公有成员函数"Speak"用于输出姓名和年龄。然后定义两个"Teacher"和"Student",它们分别继承自"Person",并具有各自的特殊行为。其,"Teacher"具有公有成员变量"Title"表示职称,"Student"具有公有成员变量"Score"表示成绩。最后,定义一个派生类"Graduate",它同时继承自"Teacher"和"Student",并具有公有成员变量"Research"表示研究方向。要求在"Graduate"定义一个公有成员函数"Show",用于输出姓名、年龄、职称、成绩和研究方向。 以下是代码示例: ```c++ #include <iostream> using namespace std; class Person { public: string Name; int Age; void Speak() { cout << "我叫" << Name << ",今年" << Age << "岁。" << endl; } }; class Teacher : public Person { public: string Title; }; class Student : public Person { public: int Score; }; class Graduate : public Teacher, public Student { public: string Research; void Show() { cout << "我叫" << Name << ",今年" << Age << "岁。" << endl; cout << "我的职称是" << Title << ",我的成绩是" << Score << "。" << endl; cout << "我的研究方向是" << Research << "。" << endl; } }; int main() { Graduate g; g.Name = "张三"; g.Age = 24; g.Title = "教授"; g.Score = 90; g.Research = "人工智能"; g.Show(); return 0; } ``` 答案解析: 这道题要求我们定义一个名为"Person"的基类,其包含了两个公有成员变量"Name"和"Age",并具有一个公有成员函数"Speak"用于输出姓名和年龄。然后我们定义了两个"Teacher"和"Student",它们分别继承自"Person",并分别定义了各自的公有成员变量"Title"和"Score"。最后我们定义了一个派生类"Graduate",它同时继承自"Teacher"和"Student",并定义了公有成员变量"Research"。在"Graduate"定义了一个公有成员函数"Show",用于输出姓名、年龄、职称、成绩和研究方向。 在main函数,我们首先创建了一个名为g的Graduate对象,并为其各个成员变量赋值。然后使用其继承自"Teacher"和"Student"的相关成员变量和自己的成员变量,最后使用其自己定义的Show函数输出各个信息。输出结果为: ``` 我叫张三,今年24岁。 我的职称是教授,我的成绩是90。 我的研究方向是人工智能。 ``` 以上就是这道题的答案解析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值