面向对象程序设计模拟题13填空和排错题.docx
《面向对象程序设计模拟题13填空和排错题.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计模拟题13填空和排错题.docx(10页珍藏版)》请在冰豆网上搜索。
面向对象程序设计模拟题13填空和排错题
二、填空题(共10题,共20分)
1.类成员的访问权限分为__public___、__protected_和__private__三类。
(2分)
2.下列语句序列执行后输出10,请将划线处的语句补充完整。
classMyClass{
public:
MyClass(intx):
val(x){}
voidPrint();
private :
intval ;
};
void MyClass:
:
Print(){cout<intmain(){
MyClassobj(10);
obj.Print();
return0;
}
3.有两个类M和C,其中类C定义如下:
classC{public:
Mm;};。
若建立类C的对象object,则对象m和对象object中后被初始化的是对象____object____。
(2分)
4.下列语句序列执行后输出Hello,请将划线处的语句补充完整。
(2分)
classMyClass{
public:
voidPrint()const{cout<<"Hello";}
};
intmain(){
MyClass*p=newMyClass();
p-> Print();
return0;
}
5.请在划线处填写正确内容,使类MyClass的复制构造函数的声明完整。
(2分)
classMyClass{
public:
MyClass(const____MyClass&______________obj);
};
6.为了解决多继承产生的_菱形继承_问题,在C++中引入了虚基类。
(2分)
7.派生新类的类称为___父类_,而派生出的新类称____子类___。
(2分)
8.运算符函数的函数名是由运算符前加关键字__operator构成的。
(2分)
9.下列语句序列的输出结果是____100__。
(2分)
classMyClass{
public:
MyClass(intx){cout<~MyClass(){cout<<0;}
};
intmain(){
MyClassobj1
(1),obj2(obj1),&ptr=obj1;
return0;
}
10.所有在类内部定义的成员函数都是 内联函数。
(2分)
三、改错题(共1题,共10分)
下列程序中有三个错误,请改正错误(注意不要修改主函数),使程序的输出结果为:
Thepointis(0,1)
Thepointis(3,5)
源文件清单如下:
Line1:
#include
Line2:
classPoint{
Line3:
public:
Line4:
Point(intxx=0,intyy):
x(xx),y(yy){}
Line5:
voidMove(intxOff,intyOff)const{
Line6:
x+=xOff;y+=yOff;
Line7:
}
Line8:
voidPrint()const
Line9:
{cout<<"Thepointis("<Line10:
private:
Line11:
intx,y=0;
Line12:
};
Line13:
intmain(){
Line14:
Pointp1,p2(2,1);
Line15:
p1.Print();
Line16:
p2.Move(1,4);
Line17:
p2.Print();
Line18:
return0;
Line19:
}
Line4:
Point(intxx=0,intyy=1):
x(xx),y(yy){}
Line5:
voidMove(intxOff,intyOff){
Line11:
intx,y;
二、填空题(共10题,共20分)
1.类的三种继承方式是_公有继承(public),保护继承(protect),私有继承(private)。
(2分)
2.下列语句序列的输出结果是_120000_____。
(2分)
classMyClass{
public:
MyClass(intx=0){cout<~MyClass(){cout<<0;}
};
intmain(){
MyClassarr[3]={MyClass
(1),MyClass
(2)};
return0;
}
3.下列语句序列执行后输出10,请将划线处的语句补充完整。
(2分)
classMyClass{
public:
MyClass(intx):
_____val(x)____{}
voidPrint(){cout<private:
intval;
};
intmain(){
MyClassobj(10);
obj.Print();
return0;
}
4.请在划线处填写正确内容,使类Test的复制构造函数的声明完整。
(2分)
classTest{
public:
Test(const__Test&_____obj);
};
5.在C++中,_函数重载__是指同一个函数名可以对应多个函数的实现。
(2分)
6.请在划线处写出MyClass类的析构函数声明。
(2分)
classMyClass{
public:
_____~MyClass();______
};
7.下列语句序列执行后输出Hello,请将划线处的语句补充完整。
(2分)
classMyClass{
public:
voidPrint()const{cout<<"Hello";}
};
intmain(){
MyClass*p=newMyClass();
p->Print();
return0;
}
8.运算符函数的函数名是由运算符前加关键字_operator__构成的。
(2分)
9.请在划线处填写构造函数的声明,使得语句Pointp1;创建的p1对象为原点。
(2分)
classPoint{
public:
__Pointp1(intx=0,inty=0);___
private:
intx,y;
};
10.有两个类M和C,其中类C定义如下:
classC{public:
Mm;};。
若建立类C的对象object,则对象m和对象object中后被初始化的是对象__object____。
三、改错题(共1题,共10分)
下列程序中有三个错误,请改正错误(注意不要修改主函数),使程序的输出结果为:
Kellyis10yearsold.
Patrickis35yearsold.
源文件清单如下:
Line1:
#include
Line2:
classPerson{
Line3:
public:
Line4:
Person(char*str,int_age=10):
age(_age)
Line5:
{name=newchar[strlen(str+1)];strcpy(name,str);}
Line6:
void~Person(){delete[]name;}
Line7:
voidSetAge(intnum)const{age=num;}
Line8:
voidPrint()const
Line9:
{cout<Line10:
private:
Line11:
char*name;
Line12:
intage=0;
Line13:
};
Line14:
intmain(){
Line15:
Personp1("Kelly"),p2("Patrick",25);
Line16:
p1.Print();
Line17:
p2.SetAge(35);
Line18:
p2.Print();
Line19:
return0;
Line20:
}
Line6:
~Person(){delete[]name;}
Line7:
voidSetAge(intnum){age=num;}
Line12:
intage;
二、填空题(共10题,共20分)
1.在C++中,_函数重载_____是指同一个函数名可以对应多个函数的实现。
(2分)
2.下列语句序列执行后输出10,请将划线处的语句补充完整。
(2分)
classMyClass{
public:
MyClass(intx):
val(x){}
voidPrint(){cout<private :
intval ;
};
intmain(){
MyClassobj(10);
obj.Print();
return0;
}
3.已知一个函数的原型是doublefun(doublex);,若要以4.25为实参调用该函数,应使用表达式______fun(4.25)______。
(2分)
4.下列语句序列执行后输出Hello,请将划线处的语句补充完整。
(2分)
classMyClass{
public:
voidPrint()const{cout<<"Hello";}
};
intmain(){
MyClass*p=newMyClass();
p->Print();
return0;
}
5.有两个类M和C,其中类C定义如下:
classC{public:
Mm;};。
若建立类C的对象object,则对象m和对象object中先被初始化的是对象______m_____。
(2分)
6.请在划线处填写构造函数的声明,使得语句Pointp1;创建的p1对象为原点。
(2分)
classPoint{
public:
___Pointp1(intx=0,inty=0);________________________________
private:
intx,y;
};
7.请在划线处写出MyClass类的析构函数声明。
(2分)
classMyClass{
public:
_______~MyClass();______________
};
8.设置虚基类的目的是为了解决多继承产生的_菱形继承__问题。
(2分)
9.将一个函数声明为一个类的友元函数必须使用关键字__friend___。
(2分)
10.派生新类的类称为_基类,又称为父类,而派生出的新类称_派生类,又称为子类__。
(2分)
三、改错题(共1题,共10分)
下列程序中有三个错误,请改正错误(注意不要修改主函数),使程序的输出结果为:
Constructor
Thevalueis10
Destructor
源文件清单如下:
Line1:
#include
Line2:
classMyClass
Line3:
{
Line4:
public:
Line5:
MyClass(intx):
value(x){cout<<"Constructor"<Line6:
void~MyClass(){cout<<"Destructor"<Line7:
voidPrint()const;
Line8:
private:
Line9:
intvalue=0;
Line10:
};
Line11:
voidMyClass:
:
Print()
Line12{
Line13cout<<"Thevalueis"<Line14:
}
Line15:
intmain()
Line16:
{
Line17:
constMyClassobject(10);
Line18:
object.Print();
Line19:
return0;
Line20:
}
Line6:
MyClass(){cout<<"Destructor"<Line7:
voidPrint();
Line9:
intvalue;