下列程序时类D代码段出现编译错误,原因是【 】。
include<iostream. h>
class A
{
public:
A(char c){cout<<"A's constructor."<<c<<endl;}
~A(){cout<<"A's destructor."<<endl;}
};
class B: virtual public A
{
public:
B(char cb,char cd):A(cb) {cout<<"B's constructor."<<cd<<endl;}
~B(){cout<<"B's destructor."<<endl;}
private:
char b;
};
class C:virtual public A
{
public:
C(char cc, char cd):A(cc)
{cout<<"C's constructor. "<<cd<<endl;}
~C(){cout<<"C's destructor."<<endl;}
};
class D:public B,public C
{
public:
D(char cd,char ce,char cf, char cg, char ch,char ci)
:C(cf,cg),B(cd,ce),A(cd),aa(ch)
{cout<<"D's constructor."<<ci<<endl;}
~D() {cout<<"D's destructor."<<endl;}
private:
A aa;
};
void main()
{
D ohj('a','b','c','d','e','f')
}
第6题
下列程序编译错误,因为add函数返回值是一个引用,故对return后返回值的要求是【 】。
include<iostream. h>
int& add(int x, int y)
{
return x+y;
}
void main( )
int i=3,j=19;
cout<<(add(i,j)+ =20)<<end1;
}
第7题
个类Base和Derived,但类的定义并不完整。
请按要求完成下列操作,将类的定义补充完成:
①定义类shapes的保护成员x和y,它们都是整型变量。请在注释“//* *1* *”之后添加适当的语句。
②完成构造函数shapes(int d,int w)定义,使类shapes的保护成员x、y分别初始化为d、w,并分别具有默认值0、0。请在注释“//* *2* *”之后添加适当的语句。
③完成类shapes的成员函数setvalue(int d,int w)的定义,shapes类的数据成员x和y分别被设置成d和w。请在注释“//* *3* *”之后添加适当的语句。
④将类shapes的成员函数void disp()设置成纯虚函数。请在注释“//* *4* *”之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件MyMain13.cpp清单如下:
//MyMain13.cpp
include<iostream>
using namespace std;
class shapes
{
//* * *1* * *
public:
//* * *2* * *
void setvalue(int d,int w)
{
//* * *3* * *
}
//* * * 4 * * *
};
class square : public Shapes
{
public:
void disp()
{
cout<<x*y<<end1;
}
};
int main()
{
shapes*ptr;
square s1;
ptr=&s1;
ptr->setvalue(10,5);
ptr->disp();
return 0;
}
第9题
定义并不完整。请按要求完成下列操作,将程序补充完整。
(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();
}
第10题
问题,请改正程序中的错误,使该程序的输出结果如下:
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');
}
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!