2025年9月计算机二级C++语言程序设计——选择题打卡Day5

备考计算机二级 C++ 程序设计考试,选择题是不容忽视的重要部分。

今天为大家带来 10 道选择题,聚焦继承与派生的核心考点,助力掌握类的重用机制。

1、下列关于继承的叙述中,错误的是( )
A. 继承是面向对象程序设计的重要特性之一
B. 派生类可以继承基类的所有成员
C. 派生类可以拥有自己的成员
D. 派生类可以重新定义基类的成员函数

答案:B

分析:派生类不能继承基类的私有成员,B 选项错误;A、C、D 均正确,故选 B。

2、在 C++ 中,用于实现运行时多态性的是( )
A. 友元函数
B. 重载函数
C. 模板函数
D. 虚函数

答案:D

分析:虚函数通过动态绑定实现运行时多态,故选 D。

3、下列关于派生类构造函数的叙述中,正确的是( )
A. 派生类构造函数必须对基类的所有数据成员进行初始化
B. 派生类构造函数不能调用基类的构造函数
C. 派生类构造函数的成员初始化列表中可以包含基类的构造函数
D. 派生类构造函数的参数个数必须多于基类构造函数的参数个数

答案:C

分析:派生类构造函数可在初始化列表中调用基类构造函数,A、B、D 错误,故选 C。

4、有如下类定义:

class Base {
public:
    int data;
};
class Derived1 : private Base {};
class Derived2 : protected Base {};

在 main 函数中,下列语句正确的是( )
A. Derived1 d1; d1.data=0;
B. Derived2 d2; d2.data=0;
C. 以上都不正确
D. 以上都正确

答案:C

分析:Derived1 私有继承 Base,Derived2 保护继承 Base,其对象都不能直接访问基类的 public 成员 data,故选 C。

5、下列关于虚函数的叙述中,正确的是( )
A. 虚函数不得是静态成员函数
B. 构造函数可以是虚函数
C. 派生类必须重定义基类的虚函数
D. 虚函数可以是友元函数

答案:A

分析:虚函数不能是静态成员函数,A 正确;构造函数不能是虚函数,B 错误;派生类可重写也可不重写虚函数,C 错误;虚函数必须是类的成员函数,不能是友元,D 错误,故选 A。

6、有如下程序:

#include<iostream>
using namespace std;
class Base {
public:
    void show() { cout<<"Base"; }
};
class Derived : public Base {
public:
    void show() { cout<<"Derived"; }
};
int main() {
    Base *p=new Derived;
    p->show();
    delete p;
    return 0;
}

运行时的输出结果是( )
A. Base
B. Derived
C. BaseDerived
D. DerivedBase

答案:A

分析:show 不是虚函数,p->show () 调用基类版本,输出 Base,故选 A。

7、下列关于多继承的叙述中,错误的是( )
A. 多继承即一个派生类可以有多个基类
B. 多继承可能产生二义性问题
C. 多继承不能使用 virtual 关键字
D. 多继承可以通过虚基类解决二义性问题

答案:C

分析:多继承中可使用 virtual 声明虚基类以解决二义性,C 选项错误;A、B、D 均正确,故选 C。

8、有如下类定义:

class Base {
protected:
    int x;
public:
    Base(int x=0) : x(x) {}
};
class Derived : public Base {
    int y;
public:
    Derived(int x,int y) : y(y) {}
};

该类定义存在的错误是( )
A. 派生类构造函数未初始化基类成员 x
B. 基类构造函数参数不应有默认值
C. 派生类不能访问基类的 protected 成员
D. 派生类成员 y 的初始化方式错误

答案:A

分析:派生类构造函数应在初始化列表中调用基类构造函数(如Base(x)),否则基类默认构造函数被调用,但基类无默认构造函数,故选 A。

9、下列关于抽象类的叙述中,正确的是( )
A. 抽象类可以实例化对象
B. 抽象类的派生类一定不是抽象类
C. 抽象类中的纯虚函数必须被派生类重定义
D. 抽象类中一定含有纯虚函数

答案:D

分析:抽象类含纯虚函数,不能实例化,A 错误;派生类若未重写纯虚函数仍为抽象类,B、C 错误;D 正确,故选 D。

10、有如下程序:

#include<iostream>
using namespace std;
class A {
public:
    virtual void f() { cout<<"A"; }
};
class B : public A {
public:
    void f() { cout<<"B"; }
};
class C : public A {
public:
    void f() { cout<<"C"; }
};
void show(A *p) { p->f(); }
int main() {
    A a; B b; C c;
    show(&a); show(&b); show(&c);
    return 0;
}

运行时的输出结果是( )
A. ABC
B. AAA
C. BBB
D. CCC

答案:A

分析:f 是虚函数,show 函数通过基类指针调用派生类重写的函数,输出 ABC,故选 A。

希望这 10 道题能帮助大家对继承与派生知识点有更深入的理解和掌握。如果想要获取完整版 PDF(含二级更多题目题库)

夸克网盘分享

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值