首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序段: #include using namespace std; class base { public: base(int cnt) { resource=new int[cnt]
有如下程序段: #include using namespace std; class base { public: base(int cnt) { resource=new int[cnt]
admin
2021-07-02
20
问题
有如下程序段:
#include
using namespace std;
class base
{
public:
base(int cnt)
{
resource=new int[cnt];
}
~base()
{
delete[]resource;
}
virtual void show()
{
cout<<"base"<
}
int*resource:
};
class derived:public base
{
public:
derived(int cnt):base(cnt)
{
resource=new float[cnt];
}
~derived()
{
delete[]resource;
}
void show()
{
COUt<<"derived"<
}
float*resource;
};
上述程序使得derived对象中的动态内存空间有可能不被释放,有内存泄漏风险,原因是( )。
选项
A、base类是抽象类
B、derived类的析构函数没有释放基类的动态内存
C、base类的析构函数不是虚函数
D、derived类的resource与公有继承得到的resource同名
答案
C
解析
基类base中的数据成员resouree为整型指针变量,派生类derived中的数据成员resource与基类base中的同名,但类型为浮点型指针变量,基类base中构造函数使用new为resource(整型指针)分配了内存空间,在析构函数中释放;派生类derived的构造函数在成员初始化类表中调用base的构造函数构造对象的基类部分,然后在构造函数体内使用new为resource(浮点型指针)分配了内存空间,在析构函数中释放浮点型resource指针;由于基类base中的析构函数未定义为虚函数,所以派生类derived中的析构函数在被调用时,不会再调用基类base中的析构函数,导致基类base中的整型指针变量resource无法释放,造成内存泄漏。故本题答案为C选项。
转载请注明原文地址:https://kaotiyun.com/show/aifp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
有如下程序:#include<iostream>usingnamespacestd;classPoint{public:staticintnumber;public:Pointo{number++;}~Point(){number
有如下4个语句:①cout<<’A’<<setfill(’*’)<<left<<setw(7)<<’B’<<endl;②cout<<setfill(’*’)<<left<<setw(7)<<’A’<<’B’<<endl;③co
下列关于类模板的描述中,错误的是()。
下列关于函数模板的描述中,正确的是()。
阅读下面程序:#include<iostream.h>fun(inta,intB.{intc;c=a+b:returnC;}voidmain(){intx=6,y=
在类声明中,紧跟在“public:”后声明的成员的访问权限是()。
结构化程序设计中,下面对goto语句使用描述正确的是()。
下列语句都是程序运行时的第1条输出语句,其中一条语句的输出效果与其他三条语句不同,该语句是()。
软件生命周期是指
随机试题
实施可持续发展战略必须正确处理( )的关系。
主张文章应“明道”、“致用”、“事信”、“言文”的是【】
肝豆状核变性的神经系统主要表现为反复惊厥发作。()
患者,男,76岁。小便失禁,精神倦怠,少气懒言,面色无华,舌淡苔薄白,脉弱无力。诊为前列腺增生症,其证候是()
饥饿时,能量来源主要是( )
在缺铁性贫血的相应化验中唯一数值增高的指标是
机场的生态影响评价范围向周际外延()km。
在工程施工进度计划的实施过程中,为了加快施工进度,可以采取的技术措施是( )。
依据马斯洛的需要层次理论,下列属于成长性需要的是()。,
用来表示具有某种特征的一类事物的全体的是()
最新回复
(
0
)