首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
请使用V05或使用【答题】菜单打开考生文件夹pmj1下的工程pmj1,此工程中包含了类Pets(“宠物”)和主函数main的定义。程序中位于每个“//ERROR****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为: Nam
请使用V05或使用【答题】菜单打开考生文件夹pmj1下的工程pmj1,此工程中包含了类Pets(“宠物”)和主函数main的定义。程序中位于每个“//ERROR****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为: Nam
admin
2016-06-12
48
问题
请使用V05或使用【答题】菜单打开考生文件夹pmj1下的工程pmj1,此工程中包含了类Pets(“宠物”)和主函数main的定义。程序中位于每个“//ERROR****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:
Name:sonny Type:dog
Name:John Type:dog
Nine:Danny Type:cat
Name:John Type:dog
注意:只修改每个“//ERROR****found****”下的那一行,不要改动程序中的其他内容。
#include
using namespace std;
enum Pets type{dog,cat,bird,fish);
class Pets{
private:
char*name;
Petstyp;type e
public:
Pets(const char*name=“sonny”,
Pets_type type=dog);
Pets&operator=(const Pets&s);
一Pets();
void show()const;
};
Pets::Pets(const char*name,Pets
type type)
//构造函数
{
this一>name=new char[strlen(name)+1];
strcpy(this一>name,name);
//ERROR*********found**********
type=type;
}
Pets::一Pets()//析构函数,释放name
所指向的字符串
{
//ERROR*********found*********
name=‘/0’;
}
Pets&Pets::operator=(const Pets
&s)
{
if(&s—this)//确保不要向自身赋值
return*thiS;
delete[]name;
name=new char[strlen(s.name)+1];
//ERROR*********found***********
strcpy(this一>name,name);
type=S.type;
return*this ;
}
void Pets::show()const
{
cout<<“Name:”<
switch(type)
{
case dog:cout<<“dog”;break;
case cat:cout<<“cat”;break;
case bird:cout<<“bird”;break;
case fish:cout<<“fish”;break;
}
cout<
}
int main()
{
Pets mypet1,mypet2(“John”,dog),
Pets youpet(“Danny”,cat);
mypet1.show();
mypet2.show();
youpet.show();
youpet=mypet2;
youpet.show();
return 0;
}
选项
答案
(1)this一>type=type; (2)delete[]name; (3)strcpy(this一>name,s.name);
解析
主要考查的是Pets类,其中涉及enum类型、动态数组、构造函数、运算符重载、析构函数和const函数。本题程序很长,涉及的函数类型较多,但考查的内容较简单,只要注意细节便可答对此题。
【解题思路】
(1)主要考查考生对构造函数的掌握情况,因为形参名和类的私有成员名称都是type,为了避免混淆,所以规定类的私有成员使用this指针调用,即:this一>type=type;。
(2)主要考查考生对析构函数的掌握情况,题目中要求,释放name所指向的字符串。要释放name指针用delete语句,即delete[]name;。
(3)主要考查考生对sUcpy函数的掌握情况,strcpy函数的形参为两个字符串,而name为指向字符串的指针,因此使用语句:strcpy(this一>name,s.name);。
【解题宝典】
主要考查考生对构造函数、析构函数和strcpy()函数的掌握,构造函数中当类的私有成员和形参名称相同时,为了区别类的成员要调用this指针来区分。析构函数必须要用delete语句释放指针。
转载请注明原文地址:https://kaotiyun.com/show/SYNp777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
执行语句for(i=1++<4;);,后变量i的值是
函数模板:template<classT>Tadd(Tx,Ty){returnx+y;}下列对add函数的调用不正确的是
有以下程序#include<iostream.h>voidfun(inta,intb,intc){a=456,b=567,c=678;}voidmain(){
有以下程序:#include<iostream>usingnamespacestd;intmain(){inti=010,j=10;cout<<(++i)<<","<<i--<<end1
数据库管理系统是位于【】之间的软件系统。
设树T的度为4,其中度为1,2,3,4的节点个数分别为4,2,1,1。则T中叶子节点数为()。
有以下程序:#include<iostream>usingnamespacestd;classMyClass{public:MyClass();~MyClass();v
若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是
若变量已正确定义并赋值,以下符合C++语言语法的表达式是
下列叙述中,不属于结构化程序设计方法的主要原则的是
随机试题
HBV抗原.抗体的检测可用于筛选合格的献血员。()
橡皮成型的应用范围是什么?
收入,是指企业在日常活动中形成的、会导致所有者权益增加的、与所有者投入资本无关的经济利益的净流入。()
甲公司(增值税一般纳税人,适用的增值税税率为17%)2016年1月1日应收账款的账面价值为1200万元,当月赊销商品一批,价款为200万元(不含税),收回货款100万元。甲公司按应收账款余额的5%计提坏账准备,则1月31日应计提的坏账准备为()万
在教学过程中,学生得到教师的关注、赏识与期望后,常常表现出更积极的学习行为,这种心理效应是()。
某地规定,居民申请一套公租房,需要提供7个证件,还要经过“三审三公示”程序,前后至少等待90天。面对如此繁琐耗时的行政审批流程,许多公租房的需求者望而却步,导致该地不少公租房空置。对此,当地相关部门解释:“之所以要求提供这么多证件,是为了分配的公平公正;之
一项工程原计划450人100天完成,现在需要提前10天,需要增加的人数是( )。
有如下类定义:classMyBase{intk;public:MyBase(intn=0):k(n){}intvalue()const{returnk;}};classMyDerived:MyBase{intj;public
能够实现从指定记录集里检索特定字段值的函数是( )。
LossofTrust1.人们之间的信任度下降,出现社会信任危机2.社会信任危机造成的不良影响3.我认为有哪些合适的解决方法
最新回复
(
0
)