(1)完成构造函数的定义,把数据成员size初始化为参数s的值,数据成员buffer指向动态申请的int型size大小的空间。请在注释“//**1**”之后添加适当的语句。
(2)完成拷贝构造函数的定义,注意解决多次删除的问题。请在注释“//**2**”之后添加适当的语句。
(3)完成成员函数elem的定义,该函数返回buffer的第ndx个元素的值,注意如果ndx超界,请输出“error in index”。请在注释“//**3**”之后添加适当的语句。
(4)完成析构函数的定义,要求先将字符d打印在屏幕上,再释放buffer指向的空间。请在注释“//**4**”之后添加适当的语句。
输出结果如下:
1234567891012345678910dd
注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。
源程序文件test13_3清单如下:
include<iostream.h>
include<stdlib.h>
class Vector
{
public:
Vector(int s=100);
Vector(Vector &v);
int &elem(int ndx);
void display();
void set();
~Vector();
protected:
int size;
int *buffer;
};
Vector::Vector(int s)
{
// ** 1 **
}
Vector::Vector(Vector &v)
{
// ** 2 **
for(int i=0; i<size; i++)
{
*(buffer+i)=*(v.buffer+i);
}
}
int &Vector::elem(int ndx)
{
// ** 3 **
{
cout<<"error in index"<<endl;
exit(1);
}
return buffer[ndx];
}
void Vector::display()
{
for(int j=0;j<size;j++)
cout<<elem(i)<<endl;
}
void Vector::set()
{
for(int j=0;i<size;j++)
elem(j)=j+1;
}
Vector::~Vector()
{
// ** 4 **
}
void main()
{
Vector a(10);
Vector b(a);
a. set();
b. set();
a. display();
b. display();
}
第1题
问题,请改正程序中的错误,使该程序的输出结果如下:
member1=5member2=5
member1=7member2=9
源程序文件test14_1.cpp清单如下:
include<iostream.h>
class My Class
{
/************** found *****************
friend void setMember(MyClass myObj,char meml)
{
myObj.member1=mem1;
myObj.member2=mem1;
cout<<"member1="<<myObi.member1<<" member2="<<myObj.member2<<endl;
}
/************** found ***************/
void setMember(MyClass& myObj,char mem1,char mem2)
{
myObj.member1=mem1;
myObj.member2=mem2;
cout<<"member1:"<<myObj.member1<<"member2="<<myObj.member2<<endl;
}
private:
char member1;
char member2;
};
void main()
{
MyClass theObj;
/************** found ****************/
theObj.setMember(theObj,'5');
theObj.setMember(theObj,'7','9');
}
第3题
程序的输出结果是【 】。
include <iostream>
using namespace std;
class A{
public:
A(){a=b=2;}
A(int i,int j){a=i;b=j;}
void display(){cout<<a<<b;}
private:
int a,b;
};
void main(){
A m,n(4,8);
m.display();
n.display();
}
第5题
下列程序的执行结果是______。
include<iostream.h>
include<iomanip.h>
using namespace std;
voidmain()
{
cout<<setfill('x')<<setw(10);
cout<<"Hello"<<end1;
}
第6题
下列程序的执行结果是______。
include<lostream.h>
int a;
int sum_a(void)
{
a=a+5;
return a;
}
void main(void)
{
a=a+sum_a( );
cout<<a<<endl;
}
第7题
语句cout<<setiosflagags(ios::showpos)<<125<<"/t"<<-125<<endl;的输出结果为【 】。
第9题
执行这个程序的输出结果是( );
include<iostream>
using namespace std;
class TestClass1
{
public:
void fun1(){cout<<"TestClass1\n";}
virtual void fun2(){cout<<"TestClass1\n";}
};
class TestClass2:public TestClass1
{
public:
void fun1(){cout<<"TestClass2\n";}
void fun2(){cout<<"TestClass2\n";}
};
void f(TestClass1&b){b.fun1();b.fun2();}
int main()
{
TestClass2 obj;
f(obj);
return 0;
}
第10题
师和考生情况进行了描述。由于教师和考生之间有相同的信息,如姓名、年龄等,所以可抽象出一个基类person,考生类student和教师类teacher作为person类的派生类。请按要求完成下列操作,将程序中的类定义补充完整。
(1)定义基类person的私有数据成员name和age,分别用于表示姓名和年龄,name为字符指针,age为血型的数据。请在注释“//**1**”之后添加适当的语句。
(2)完成基类person的重载构造函数person(char *mint a)的定义,把数据成员name,age分别初始化为参数n,a的值,请在注释“//**2**”之后添加适当的语句。
(3)根据主函数main中对s1的声明,定义派生类student的构造函数。在注释“//**3**”之后添加适当的语句。
(4)完成派生类teacher成员函数void setinf(ehar *n,int a,char *d,char *1)的定义,其功能为记录教师的姓名、年龄、院,系与职称信息。请在注释“//**4**”之后添加适当的语句。
输出结果如下:
刘雷(45)destructor
蒋军(23)destructor
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件test4_3.cpp清单如下:
include<iostream.h>
class person
{
//**1**
public:
person(){}
person(char *n,int a)
{
//**2**
}
void setname(char *n){name=n;)
void setage(int a){age=a;}
~person(){cout<<name<<"("<<age<<")destructor"<<endl;)
};
class student:public person
{
char *department;
int code;
public:
//**3**
{
department=d;
code=c;
}
};
class teacher:public person
{
char *department;
char *level;
public:
teacher(){}
void setinf(char *n,int a,char *d,char *1)
{
//**4**
department=d;
level=1;
}
};
void main()
{
student s1("蒋军",23,"计算机学院",2);
teacher t1;
t1.setinf("刘雷",45,"计算机学院","教授");
}
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!