东北师范大学《C++程序设计》期末考试必备题集
奥鹏期末考核
50059–东北师范大学《C++程序设计》奥鹏期末考试题库合集
单选题:
(1)下列不是文件流类的是()。
A.ifstream
B.iostream
C.fstream
D.ofstream
答案问询微信:424329
(2)如果一个类至少有一个纯虚函数,那么该类就被称为()。
A.抽象类
B.纯基类
C.基类
D.虚基类
答案问询微信:424329
(3)以下有关继承的叙述正确的是()。
A.构造函数和析构函数都能被继承
B.派生类是基类的组合
C.派生类对象除了能访问自己的成员以外,不能访问基类中的所有成员
D.基类的公有成员一定能被派生类的对象访问
答案问询微信:424329
(4)如果在类A中用友元函数的方式重载了前缀自增运算符++,又定义了类A的一个对象a,则以下用法正确的是()。
A.operator++(a);
B.a.operator++();
C.a.operator++(0);
D.a++;
答案问询微信:424329
(5)关于函数模板,描述错误的是()。
A.函数模板必须由程序员实例化
B.函数模板的实例化由编译器实现
C.一个类定义中,只要有一个函数模板,则这个类是类模板
D.若类模板的成员函数是函数模板,则类模板实例化后,成员函数也随之实例化
答案问询微信:424329
(6)在定义派生类时,若无继承方式说明,则默认的继承方式为()。
A.私有继承
B.公有继承
C.保护继承
D.虚拟继承
答案问询微信:424329
(7)下列语句中不存在类型转换的是()。
A.int(1.1);
B.(double)2.2;
C.int i=1;
D.char c=97;
答案问询微信:424329
(8)面向对象的程序设计语言必须具备的关键要素是()。
A.抽象和封装
B.抽象和多态性
C.抽象、封装、继承和多态性
D.抽象、封装和继承性
答案问询微信:424329
(9)假定一个类A只含有一个整型数据成员x,当用户不定义任何构造函数时,系统为该类定义的默认无参构造函数为()。
A.A(){x=0;}
B.A(int a=0):x(a){}
C.A(){}
D.A(int a):x(a){}
答案问询微信:424329
(10)下列函数中,()是对文件进行写操作的。
A.get()
B.read()
C.seekg()
D.put()
答案问询微信:424329
(11)当一个函数无返回值时,函数的类型应定义为()。
A.void
B.任意
C.int
D.无
答案问询微信:424329
(12)假定指针变量p定义“int *p=new int(100);”,要释放p所指向的动态内存,应使用语句()。
A.delete *p;
B.delete
C.delete p;
D.delete []p;
答案问询微信:424329
(13)假定变量x定义为“int x=8;”,要使rx成为x的引用(别名),rx应定义为()。
A.int rx=x;
B.int rx=
C.int *rx=
D.int &rx=x;
答案问询微信:424329
(14)在声明类时,下面的说法正确的是()。
A.可以在类的声明中给数据成员赋初值
B.数据成员的数据类型可以是register
C.private、public、protected可以按任意顺序出现
D.没有用private、public、protected定义的数据成员是公有成员
答案问询微信:424329
(15)以下基类中的成员函数中表示纯虚函数的是() 。
A.virtual void vf(int);
B.virtual void vf(int)=0;
C.virtual void vf(int=0);
D.virtual void vf(int){ };
答案问询微信:424329
(16)为了使类中的某个成员不能被类的对象通过成员操作符访问,则不能把该成员的访问权限定义为()。
A.public
B.protected
C.private
D.static
答案问询微信:424329
(17)类的析构函数是在()被调用的。
A.类创建时
B.创建对象时
C.删除对象时
D.不自动调用
答案问询微信:424329
判断题:
(1)若有声明:class B:virtual public A{};则类B为类A的虚基类。
答案问询微信:424329
(2)析构函数是不能被派生类继承的。
答案问询微信:424329
(3)对于同一个运算符来说,重载的运算符的优先级比未重载的运算符的优先级高。
答案问询微信:424329
(4)类A继承类B,则A称为B的派生类,B称为A的基类。
答案问询微信:424329
(5)C++标准库中的输入输出格式操作符(函数)必须由输入输出流对象来调用。
答案问询微信:424329
(6)说明或定义对象时,类名前不需加class关键字。
答案问询微信:424329
(7)在文件操作结束时,可以用eof()成员函数关闭该文件。
答案问询微信:424329
(8)构造函数和析构函数都与类同名。
答案问询微信:424329
(9)类中含有指针数据成员时,若不定义拷贝构造函数则会产生指针悬挂问题。
答案问询微信:424329
(10)常量和引用在声明时必须初始化。
答案问询微信:424329
(11)凡是用inline说明的函数一定是内联函数。
答案问询微信:424329
(12)C++中的函数就是面向对象理论中的消息。
答案问询微信:424329
(13)C++中,对象保存在内存中,栈内存是自动分配和释放的,而堆内存需要用户自己申请和释放。
答案问询微信:424329
(14)this指针是一个const指针,不能在程序中修改它或给它赋值。
答案问询微信:424329
(15)指针和引用都是变量,都占有单独的内存空间。
答案问询微信:424329
(16)用对象访问成员时应使用运算符“.",用指向对象的指针访问成员时应使用运算符“-"。
答案问询微信:424329
(17)若将函数说明为返回一个引用,则该函数可以用在赋值运算符的左边。
答案问询微信:424329
应用题:
(17)若将函数说明为返回一个引用,则该函数可以用在赋值运算符的左边。
答案问询微信:424329
(17)若将函数说明为返回一个引用,则该函数可以用在赋值运算符的左边。
答案问询微信:424329
(17)若将函数说明为返回一个引用,则该函数可以用在赋值运算符的左边。
答案问询微信:424329
(17)若将函数说明为返回一个引用,则该函数可以用在赋值运算符的左边。
答案问询微信:424329
(17)若将函数说明为返回一个引用,则该函数可以用在赋值运算符的左边。
答案问询微信:424329
(17)若将函数说明为返回一个引用,则该函数可以用在赋值运算符的左边。
答案问询微信:424329
案例分析题:
(1)指出下面程序中的1处错误,并说明原因。#includeiostream.h class Point{ int X,Y; public: Point( ){X=0;Y=0;} Point(int x=0,int y=0){X=x;Y=y;} void display( ){coutX","Yendl;} };void main(){ Point p; p.display();}答:
答案问询微信:424329
(2)指出下列程序中的1处错误,并说明为什么。#includeiostream.h#includestdlib.hclass CTest{public: const int y2; CTest(int i1, int i2,int i3):y1(i1),y2(i2) { x=i3; } int show() const{cout"y1="y1"ny2="y2"nx="xendl;} //…private: int x; const int y1;};void main(){ CTest c(1,2,3); c.show(); c.y2 = -2; c.show();}答:
答案问询微信:424329
(3)指出下列程序中的1处错误,并说明为什么。#includeiostream.hclass Student{ char name[10]; int age; float aver; void printStu();};void main(){ Student p1,p2,p3; p1.age =30; //…}答:
答案问询微信:424329
(4)指出下列程序中的1处错误,并说明为什么。#include iostream.h class shape { public: int area () {return 0;}};class rectangle: public shape {public:int a, b;void setLength (int x, int y) {a=x; b=y;}int area () {return a*b; } };void main () {rectangle r; r.setLength (3,5); shape* s= cout r.area () endl; cout s.area () endl; }答:
答案问询微信:424329
(5)写出下面程序的输出结果。#include iostream.hclass A{private:static int n;int X;public:A(int x=0) { X=x; n++; }~A() { n– ; }static int GetNum(){ return n; }void print();};void A::print() { cout "n=" n ", X=" X endl; }int A::n = 0;void main(){A *p=new A(12); p-print(); A a(34); a.print(); delete p; cout "n=" A::GetNum() endl;}答:
答案问询微信:424329
(6)写出下面程序的运行结果。#includeiostream.h class A { public: int n; }; class B:virtual public A{}; class C:virtual public A{}; class D:奥鹏期末考核public B,public C { int getn(){return B::n;} }; void main() { D d; d.B::n=10; d.C::n=20; coutd.B::n","d.C::nendl; } 答:
答案问询微信:424329
简答题:
(1)什么是函数重载和运算符重载?为什么要使用重载?
答案问询微信:424329
(2)拷贝构造函数在哪几种情况下被调用?
答案问询微信:424329
(3)什么是类?什么是对象?对象与类的关系是什么?
答案问询微信:424329
(4)什么是多态性?请举例说明。
答案问询微信:424329
(5)什么是面向对象程序设计?
答案问询微信:424329