当前位置:编程学习 > C/C++ >>

C++给我答案啊!

改错题(本大题共5小题,每小题2分,共10分)
样题选登1: 指出下面程序段中的错误,并说明出错原因。
class Location{
int X,Y=20;
protected:
int zeroX,zeroY;
int SetZero(int ZeroX,int ZeroY);
private:
int length,height;
public:
float radius;
void init(int initX,int initY);
int GetX();
int GetY();
};
样题选登2: 指出并改正下面利用类模板的对象定义中的错误。
template<class T>
class Tany{
T x,y;
public:
Tany(T a,T b){x=a,y=b;}
T sum(){return x+y;}
};
Tany (int)obj(10,100);
东哥(441335155) 10:25:43
完成程序题(本大题共5小题,每小题4分,共20分)
根据题目要求,完成程序填空。
样题选登: 在下面程序横线处填上适当的字句,使其输出结果为0,56,56。
#include<iostream.h>
class base{

public:

____________________func(){return 0;}
};
class derived:public base{

public:

int a,b,c;

____________________ setValue(int x,int y,int z){a=x;b=y;c=z;}

int func(){return(a+b)*c;}
};
void main()
{

base b;

derived d;

cout<<b.func()<<’,’;

d.setValue(3,5,7);

cout<<d.func()<<’,’;

base& pb=d;

cout<<pb.func()<<end1;
}
答案:样题选登1: 指出下面程序段中的错误,并说明出错原因。
class Location{
int X,Y=20; // 这个地方错了,因为在创建这个类型的时候不能在里面直接赋值,如果想赋值的话必须用一个constructor. 像这个样子
public:
Location() { Y=20;}
protected:
int zeroX,zeroY;
int SetZero(int ZeroX,int ZeroY);
private:
int length,height;
public:
float radius;
void init(int initX,int initY);
int GetX();
int GetY();
};
样题选登2: 指出并改正下面利用类模板的对象定义中的错误。
template<class T>
class Tany{
T x,y;
public:
Tany(T a,T b){x=a,y=b;}
T sum(){return x+y;}
};
Tany (int)obj(10,100); //这小段程序没有什么问题,就是一个地方写错了, Tang <int>obj(10,100) 需要用尖括号知名这个template的类型

完成程序题(本大题共5小题,每小题4分,共20分)
根据题目要求,完成程序填空。
样题选登: 在下面程序横线处填上适当的字句,使其输出结果为0,56,56。
#include<iostream.h>
class base{
public:
_________ virtual int ___________func(){return 0;} //必须是virtual int 要不然第三个结果不会是56, 后面再解释
};
class derived:public base{
public:
int a,b,c;
________ void ____________ setValue(int x,int y,int z){a=x;b=y;c=z;} //原因是这就是个方法的定义没有返回值,只赋值 所以只能用void, 其他的类型需要 return。
int func(){return(a+b)*c;}
};
void main()
{
base b;
derived d;
cout<<b.func()<<’,’;
d.setValue(3,5,7);
cout<<d.func()<<’,’;
base& pb=d;
cout<<pb.func()<<end1; //刚才说那个地方必须要用virtual int 就是因为这句话,因为在这个里面他创建了一个指针是base类型的,如果直接调用其中的方法 ,func,而且在base这个类里面的方法上没有指定为virtual int的话,这次调用还是会用base里面的func() 所以结果会为0
}

上一个:C++虚析构函数
下一个:学好C++有什么用?

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,