100面向对象程序设计_题库_201903_A 更新北理工20春答案
[试题分类]:面向对象程序设计下列选项中,不是面向对象系统包含的要素的是A. 类
B. 对象
C. 继承
D. 函数
答案:D
题型:单选题
知识点:1.1.2面向对象的有关概念
难度:1下列选项中不能作为C++标识符的是
A. first_time
B. 2b
C. Class
D. hello
答案:B
题型:单选题
知识点:1.3 C++语言的词法及词法规则
难度:1{
执行下列语句序列后的输出结果是:
int count=10 , &ref=count;
count+=100; cout<<ref;
}
A. 10
B. 100
C. 110
D. 未知
答案:
题型:单选题
知识点:2.5.4 引用
难度:2在C++中,可以取代C中带参数的宏的是
A. 重载函数
B. 内联函数
C. 递归函数
D. 友元函数
答案:B
题型:单选题
知识点:4.4 内联函数
难度:1下列函数参数默认值设置错误的是
A. Fun(int x=0,int y=0)
B. Fun(int x=0,int y)
C. Fun(int x,int y=0)
D. Fun(int x,int y)
答案:B
题型:单选题
知识点:4.3.2 设置函数参数的默认值
难度:1已知函数原型为“int test(int,int,int); ”,则下列重载形式中正确的是
A. char test(int,int,int);
B. double test(int,int,double);
C. int test(int,int,int=0);
D. float test(int,int,int);
答案:
题型:单选题
知识点:4.5 函数重载
难度:2下列关于类定义的描述叙述中,正确的是
A. 类定义中包括数据成员和成员函数的声明
B. 类成员的默认访问权限是保护的
C. 数据成员必须声明为私有的
D. 成员函数只能在类体外定义
答案:A
题型:单选题
知识点:5.1 类的定义
难度:1下列选项中,可以作为类A构造函数声明的是
A. void A(int);
B. int A();
C. A(int) const;
D. A(int);
答案:D
题型:单选题
知识点:5.3.1 构造函数与析构函数
难度:2{
下列划线处应填入的内容是
class MyClass \{
public:
MyClass() \{ count++; \}
private:
static int count;
\};
count=10;
}
A. int
B. static int
C. static MyClass::int
D. int MyClass::
答案:D
题型:单选题
知识点:5.5 静态成员
难度:2下列关于常类型的叙述中,正确的是
A. 通过常对象可以调用一般成员函数
B. 常对象中的成员函数都是常成员函数
C. 可以通过成员函数修改常对象的状态
D. 必须使用成员初始化列表显式初始化常数据成员
答案:D
题型:单选题
知识点:6.3 常类型
难度:2派生类的成员函数不能访问基类中的
A. 保护成员和私有成员
B. 公有成员
C. 私有成员
D. 保护成员
答案:
题型:单选题
知识点:7.1.3 基类成员在派生类中的访问权限
难度:1下列关于继承和派生的叙述中,正确的是
A. 派生类不能访问基类的保护成员
B. 不能定义虚基类对象
C. 派生类要向基类的构造函数传递参数
D. 多继承时不会产生二义性
答案:C
题型:单选题
知识点:7 继承性和派生类
难度:3如果'-'作为类成员函数重载,在使用显式函数调用时,表达式x-y可表示为
A. x.operator-(y)
B. operator-(x,y)
C. y.operator-(x)
D. operator-(y,x)
答案:A
题型:单选题
知识点:8.2 运算符重载
难度:2{
若有如下类定义:
class Shape \{
public:
virtual void Draw()=0;
\};
则下列关于Shape类的叙述中,正确的是
}
A. 类Shape是虚基类
B. 类Shape是抽象类
C. 类Shape中的Draw函数声明有误
D. “Shape s;”能建立Shape的对象s
答案:
题型:单选题
知识点:8.5 纯虚函数与抽象类
难度:2C++中重载的运算符>>是
A. 用于输入操作的成员函数
B. 用于输入操作的非成员函数
C. 用于输出操作的成员函数
D. 用于输出操作的非成员函数
答案:B
题型:单选题
知识点:9.2.1 使用预定义的提取符
难度:1已知一个函数的原型是“int fun(int x);”,若要以5为实参调用该函数,应使用表达式 。
答案:fun(5)
题型:填空题
知识点:4.2 函数的调用
难度:1非成员函数应声明为类的 函数才能访问这个类的私有成员。
答案:友元
题型:填空题
知识点:5.6 友元
难度:1{
请在划线处填写正确内容,使类MyClass的复制构造函数的声明完整。
class MyClass \{
public:
MyClass(const obj);
\};
}
答案:MyClass&
题型:填空题
知识点:5.3.3 复制构造函数
难度:2类成员的访问权限分为 ? 、 ? 和 ? 三类。
答案:?
题型:填空题
知识点:5.1 类的定义
难度:1{
下列程序运行后输出12,请将划线处的语句补充完整。
#include <iostream>
using namespace std;
class MyClass \{
public:
void Print() const \{ cout<<12; \}
\};
int main() \{
MyClass* p = new MyClass();
Print();
delete p;
return 0;
\}
}
答案:p->或(*p).
题型:填空题
知识点:5.2 对象的定义
6.4.2 堆对象
难度:2{
下列程序运行后的输出结果是 。
#include<iostream>
using namespace std;
class MyClass \{
public:
MyClass(int x) \{ cout<<x; \}
~MyClass() \{ cout<<0; \}
\};
int main() \{
MyClass arr[]=\{MyClass(1),MyClass(2),MyClass(3)\};
return 0;
\}
}
答案:
题型:填空题
知识点:5.3 对象的初始化
6.2.1 对象数组
6.4.2 堆对象
难度:2如果类的子对象不提供成员初始化值,则调用该对象的 。
答案:默认构造函数
题型:填空题
知识点:6.4.1 子对象
难度:1用来派生新类的类称为 ? ,而派生出的新类称为 ? 。
答案:基类或父类 | 派生类或子类
题型:填空题
知识点:7.1 基类和派生类
难度:1{
请按照下列注释语句的提示补充完整类B的构造函数的定义。
class A \{
public:
A(int aa=0) : a(aa) \{ \}
private:
int a;
\};
class B : public A \{
public:
//用aa初始化基类A,用aa+1初始化成员对象c
B(int aa) : , , b(aa+2) \{ \}
private:
int b;
A c;
\};
}
答案:
题型:填空题
知识点:7.2.1 派生类的构造函数和析构函数
难度:2为了解决由____________产生的二义性问题,在C++中引入了虚基类。
答案:多继承
题型:填空题
知识点:7.3.3 多继承的二义性问题
难度:1改错题
{
下列程序中有三个错误,请指出错误所在行号并改正错误(注意不要修改主函数),使程序输出结果为:
The point is (0,1)
The point is (3,5)
源文件清单如下:
Line1: #include <iostream>
Line2: using namespace std;
Line3: class Point \{
Line4: public:
Line5: Point(int xx=0, int yy) : x(xx), y(yy) \{ \}
Line6: void Move(int xOff, int yOff) const \{
Line7: x+=xOff; y+=yOff;
Line8: \}
Line9: void Print() const
Line10: \{ cout<<"The point is ("<<x<<','<<y<<')'<<endl; \}
Line11: private:
Line12: int x,y=0;
Line13: \};
Line14: int main() \{
Line15: Point p1,p2(2,1);
Line16: p1.Print();
Line17: p2.Move(1,4);
Line18: p2.Print();
Line19: return 0;
Line20: \}
}
答案:
题型:改错题
知识点:5.3 对象的初始化
5.4.3 设置参数的默认值
难度:2
答案:Line6 :void Move(int xOff, int yOff) {
题型:改错题
知识点:6.3.3 常成员函数
难度:2
答案:Line12:int x,y;
题型:改错题
知识点:5.1 类的定义
难度:1{
请写出下列程序的输出结果。
#include <iostream>
using namespace std;
class MyClass \{
public:
MyClass(int x):val(x) \{ cout<<val<<endl; \}
~MyClass() \{ cout<<'~'<<val<<endl; \}
int Add() \{ val=2*val; return val; \}
int Add(int x) \{ val=val+x; return val; \}
void Print() const \{ cout<<val<<endl; \}
private:
int val;
\};
int main() \{
MyClass obj1(10),obj2(30);
obj1.Add();
obj2.Add(10);
obj1.Print();
obj2.Print();
return 0;
\}
}
答案:题型:阅读程序题
知识点:5.3 对象的初始化
5.4 成员函数的特性
6.3.3 常成员函数
难度:2{
请写出下列程序的输出结果。
#include <iostream>
using namespace std;
class Base1 \{
public:
Base1() \{ cout<<"Base1"<<endl; \}
~Base1() \{ cout<<"~Base1"<<endl; \}
\};
class Base2 \{
public:
Base2() \{ cout<<"Base2"<<endl; \}
~Base2() \{ cout<<"~Base2"<<endl; \}
\};
class Derived : public Base2, public Base1 \{
public:
Derived() \{ cout<<"Derived "<<endl; \}
~Derived() \{ cout<<"~Derived"<<endl; \}
private:
Base1 b1;
Base2 b2;
\};
int main() \{
Derived d;
return 0;
\}
}
答案:
Base2
Base1
Base1
Base2
Derived
~Derived
~Base2
~Base1
~Base1
~Base2
题型:阅读程序题
知识点:7.3.2 多继承的构造函数和析构函数
难度:2{
请写出下列程序的输出结果。
#include <iostream>
using namespace std;
class Base \{
public:
virtual void Show() \{ cout<<"Base"<<endl; \}
\};
class Derived : public Base \{
public:
virtual void Show () \{ cout<<"Derived"<<endl; \}
\};
void Print(Base& obj) \{ obj.Show(); \}
int main() \{
Base b;
Derived d;
cout<<"Section 1: "; Print(b);
cout<<"Section 2: "; Print(d);
return 0;
\}
}
答案:
题型:阅读程序题
知识点:8.3.2 动态联编
8.4 虚函数
难度:2
转载注明无忧答案网
页:
[1]