首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
请打开考生文件夹下的解决方案文件proj3,本题创建一个小型字符串类,字符串长度不超过100。程序文件包括proj3.h、proj3.cpp、writeToFile.obj。补充完成重载赋值运算符函数,完成深复制功能。 屏幕上输出的正确结果应该是:
请打开考生文件夹下的解决方案文件proj3,本题创建一个小型字符串类,字符串长度不超过100。程序文件包括proj3.h、proj3.cpp、writeToFile.obj。补充完成重载赋值运算符函数,完成深复制功能。 屏幕上输出的正确结果应该是:
admin
2020-04-07
99
问题
请打开考生文件夹下的解决方案文件proj3,本题创建一个小型字符串类,字符串长度不超过100。程序文件包括proj3.h、proj3.cpp、writeToFile.obj。补充完成重载赋值运算符函数,完成深复制功能。
屏幕上输出的正确结果应该是:
Hello!
Happy new year!
要求:
补充编制的内容写在“//**********333**********水料”与“**********666**********”两行之间。不得修改程序的其他部分。
注意:
程序最后调用writeToFile函数,使用另一组不同的测试数据,将不同的运行结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件。
//proj3.h
#include<iostream>
#include<iomanip>
using namespace std;
class MiniString
{
public:
friend ostream &operator<<(ostream&output,const MiniString&s)
//重载流插入运算符
{ output<<s.sPtr; return output; }
friend i stream &operator>>(istream&input,MiniString &s)
//重载流提取运算符
{char temp[100];//用于输入的临时数组
temp[0]=’\0’;//初始为空字符串
input>>setw(100)>>temp;
int inLen=strlen(temp);
//输入字符串长度
if(inLen!=0)
{
s.length=inLen;//赋长度
if(s.sPtr!=0)delete[]s.sPtr;//避免内存泄漏
s.sPtr=new char[s.length+1];
strcpy(s.sPtr,temp);
//如果s不是空指针,则复制内容
}
else s.sPtr[0]=’\0’;
//如果s是空指针,则为空字符串
return input;
}
void modString(const char * string2)//更改字符串内容
{
if(string2 !=0)
//如果string2不是空指针,则复制内容
{
if(strlen(string2)!=length)
{
length=strlen(string2);
delete[]sPtr;
sPtr=new char[length+1]; //分配内存
}
strcpy(sPtr,string2);
}
else sPtr[0]=’\0’;
//如果string2是空指针,则为空字符串
}
MiniString& operator =(const MiniString&otherString);
MiniString(const char * s =""):length((s!=0)?strlen(s):0)
//构造函数
{
sptr=0;
if(length!=0)
setString(s);
}
~MiniString()//析构函数
{delete[]sPtr;)
private:
int length; //字符串长度
char * sPtr; //指向字符串起始位置
void setString(const char *string2) //辅助函数
{
sPtr=new char[strlen(string2)+1]; //分配内存
if(string2 !=0)strcpy(sptr,string2);
//如果string2不是空指针,则复制内容
else sPtr[0]=’\0’;
//如果string2是空指针,则为空字符串
}
},
//proj3.cpp
{}include<iostream>
#include<iomanip>
using namespace std;
#include"proj 3.h"
MiniString&MiniString::operator=(const MiniString&otherString)
{//重载赋值运算符函数。提示:可以调用辅助函数setString
//************ 333 *********
//*************666 **********
}
int msin()
{
MiniString strl("Hello!"),str2;
void writeToFile(const char *);
str2=strl;//使用重载的赋值运算符
str2.modString("Happy newyear!");
cout<<strl<<’\n’;
cout<<str2<<’\n’;
writeToFile("");
return 0;
}
选项
答案
1ength =otherStrlng.length; //把对象字符串otherstrinq的长度赋值给变量lenqth setString(otherString.sPtr); //调用函数setstrinq,实现给类变量sptr分配空间,以及逐个把对象otherstring字符串的值复制到sptr中return*this; //返回被赋值的对象
解析
主要考查考生对运算符重载的掌握,题目要求重载赋值运算符函数。要重载的运算符是“=”,即赋值的意思。提示:可以调用辅助函数setString。该函数的功能是复制形参的字符串到sPtr中,因此,首先复制:length,其次通过函数setString复制sPtr,最后按要求返回* this;。
转载请注明原文地址:https://kaotiyun.com/show/3w8p777K
本试题收录于:
二级C题库NCRE全国计算机二级分类
0
二级C
NCRE全国计算机二级
相关试题推荐
阅读程序段,当输入数据形式为25,13,10时,正确的输出结果为______。intx,y,z;cin>>x>>y>>z;;cout<<"x+y+z=%d\n"<<x+y+z;
下列对模板的声明中,正确的是()。
以下程序的输出结果是()。main(){inta=4,b=5,c=0,d;d=!a&&!b)||!c;cout<<d<<endl;}
程序的结果为【】。 #include”iostream.h” template<typenameT> Ttotal(T*data) { Ts=0; while(*data) {
在C++语言中,打开一个文件就是将这个文件与一个什么建立关联?
以下程序的结果是 #include<iostream.h> voidmain() {char*p="abcdefgh",*r; long*q; q=(long*)p; q++; r=(char*)q; co
虚函数必须是类的()。
下列描述中,错误的是()。A)公有继承时基类中的公有成员在派生类中仍是公有成员B)公有继承时基类中的保护成员在派生类中仍是保护成员C)保护继承时基类中的公有成员在派生类中仍是公有成员D)保护继承时基类中的保护成员在派生类中仍是保护成
以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址。#include<string>char*scmp(char*s1,char*s2){if(strcmp(s1,s2)<0)
在C++中,编译时的多态性是通过模板或函数【12】实现的。
随机试题
患者,男,60岁。被汽车撞伤后送入急诊室。有毛细血管再充盈延迟和低血压,心率为70次/分。请问: (1)此患者处于何种病理过程?可能的解释是什么? (2)此患者的心率变化和毛细血管再充盈延迟是否符合相应的病理过程的反应特征?为什么?
超声雾化吸入器水温超过多少时需要调换
临床上需测定药物浓度进行监测的药物不包括
A.二阴煎B.养心汤C.大补元煎D.左归丸E.滋水清肝饮
男性,25岁。骑跨式会阴部外伤后,不能自行排尿,会阴部青紫并阴囊血肿,导尿管不能插入膀胱,多为
符合下列条件的法典是:①中国历史上最后一部封建成文法典②中国传统封建法典的集大成者③充分体现了汉唐以来确立的封建法律的基本精神、主要制度④体制为名例律、吏律、户律;礼律、兵律、刑律、工律七部分
某企业向银行借入1000万元,期限3年,到期需还本付息合计1300万元,已知(F/P,9%,3)=1.295,(F/P,10%,3)=1.331,(F/P,11%,3)=1.368,则银行贷款利率为( )。
个人理财业务是建立在()基础上的银行服务。
“三同时”制度,是指新建、改建、扩建项目和技术改造项目以及区域性开发建设项目的污染治理设施必须与主体工程同时设计、同时施工、同时投产的制度。根据以上定义,下列没有违反“三同时”制度的是()。
请运用中国法制史的理论知识对下列材料进行分析,并回答下列问题。对比性分析:《唐律疏议·名例律》:“诸本条别有制,与例不同者,依本条。”《大明律附例·名例律》:“凡律自颁降日为始,若犯在已前者,并依新律拟断。”这两段文字的基
最新回复
(
0
)