首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
有如下程序段: #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
41
问题
有如下程序段:
#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全国计算机二级
相关试题推荐
定义派生类时,若不使用关键字显式地规定采用何种继承方式,则默认方式为()。
有两个关系R和S如下:由关系R通过运算得到关系S,则所使用的运算为
要定义一个具有5个元素的一维数组vect,并使其各元素的初值依次是30,50,一88,0和0,则下列定义语句中错误的是()。
下面程序中对一维坐标点类Point进行运算符重载#includeusingnamespacestd;classPoint{public:Point(intval){x=val;}Poin
结构化程序设计中,下面对goto语句使用描述正确的是()。
以下程序的输出结果是()。#include<iostream>usingnamespacestd;voidfun(char**q){++q;cout<<*q<<end1;}
为类Matrix重载下列运算符时,只能作为Matrix类成员函数重载的运算符是()。
有如下类定义:classFoo{public:Foo(intv):value(v){}//①~Foo(){}//②private:
下列关于文件流的描述中,正确的是()。
支持子程序调用的数据结构是()。
随机试题
A上市公司于2012年3月31日通过定向增发本公司普通股对B公司进行合并,取得B公司80%股权。假定不考虑所得税影响,该项业务的有关资料如下:(1)2012年3月31日,A公司通过定向增发本公司普通股,以2股换1股的比例自B公司原股东C公司处取得了B公司
在临床开展最多、效果最好的器官移植
可复性牙髓炎不可能出现的转归是
Froment征主要用于检查
2016年7月18日,某市咨询公司程先生前往诚信税务师事务所咨询,现就下列问题分别予以解答。丙企业将部分对外投资股权转让给个人并签订了企业股权转让合同,这样的股权转让合同是否需要缴纳印花税?请简述理由。
甲造船厂2016年5月业务如下:(1)购买一批造船用材料,取得增值税专用发票,注明金额600万元;支付材料运费,取得增值税专用发票,注明运费10万元;(2)购入的一批材料,取得增值税专用发票,注明金额80万元,将该批材料送至乙锅炉厂,委托其加工成船用锅
计算并填写下表。
设a、b都是自然数,为求a除以b的余数,某人编写了以下函数:Functionfun(aAsInteger,bAsInteger)Whilea>ba=a-bWend
有如下程序:#includeusingnamespacestd;classBase{public:Base(intx=0){cout
WiththeadventofInternet,manystudentsstudywiththehelpoftheInternetwhileothersstillprefertousethelibraryasa
最新回复
(
0
)