D.delete运算符只能释放由new分配的动态存储空间 78、能够释放对象所占资源的是 ( A) A.析构函数 B.数据成员 C.构造函数 D.静态成员函数
79、虚函数的定义是在基类中进行的,定义时需要冠以关键字C A.static B.frend C.virtual D.public
80、在C++中串流类是在头文件strstrea.h中定义的,下列不属于串流类的是 (C)A.strstream B.ostrstream C.ofstream D.istrstream
二、填空题
1. “面向对象”程序设计的三大基本特性是封装性、
__继承__ 、多态性。
2、C++支持两种多态性:__编译___时的多态性和____运行时___时的多态性。 3.在函数体之后加 __const__ 关键字可以防止覆盖函数改变数据成员的值。 4、对于类中定义的任何成员,其隐含访问权限为____private____。
5、 若只需要通过一个成员函数读取数据成员的值,而不需要修改它,则应在函数头的后面 加上_const___关键字。
6. 如果new返回的指针丢失,则所分配的堆空间无法收回,称为 _内存泄漏
__ 。
7、在继承机制下,当对象消亡时,编译系统先执行 子类 的析构函数,然后才执行 派生类 的析构函数,最后执行 基类 的析构函数。 8、 假定用户为类AB定义了一个构造函数“AB(int aa):a(aa){}”,则_a__是该类的数据成员。
9. 假定用户没有给一个名为 car 的类定义析构函数,则系统自动给出的缺省析
构函数定义为 ____car::car(){}____ 。
10. 访问一个指针所指向的对象的成员所用的运算符是 __->_____ 。
11、已知有定义“int x, a[]={5,7,9}, *pa=a;”,在执行“x=++*pa;”语句后,x的值是__6____,*(pa+1)的值为___7___。
12.若希望用一个已有对象来构造另一个同类型的对象,可以使用 拷贝构造函数
来实现。
13、假定AB为一个类,则类定义体中的“AB(AB& x);”语句为该类___拷贝构造函数___的原型语句,而“operator=(AB& x);”为该类___赋值重载函数____的原型语句。
14、为了访问某个类的私有数据成员,必须在该类中声明该类的 友元 。 15、静态成员是局部于类的成员,它提供一种同类对象的__共享 ___机制。 16、访问一个指针所指向的对象的成员所用的运算符是 __->__ 。
17. 面向对象程序设计有四个主要特点,即抽象、封装、_继承__和_多态 __。 18.在用class定义一个类时,数据成员和成员函数的默认访问权限是
_private____。
19.在函数体之后加 _const__ 关键字可以防止覆盖函数改变数据成员的值。 20.私有数据通常由公有成员函数来访问(读和写)。这些函数统称为__操作___。 21.在字长为32位的机器中,sizeof(float)= 4 字节,sizeof(double)= 8 字
节
22.引用通常用作函数的参数和__引用变量__。
23. 如果new返回的指针丢失,则所分配的堆空间无法收回,称为 _____内存
泄漏_ 。
24. C++中多态性包括两种多态性:__编译____时的多态性和____运行____时的
多态性。 25. 若有char a[80];则cin>>a表示从键盘上读入一个__字符串__ 到数组a中。 26.静态数据成员是类的所有对象中 共享 的成员,静态数据成员初始化与一
般数据成员初始化 不同 。
27. C++流类库定义的cin,cout,cerr和clog是__全局流对象___ 。 28. 访问一个指针所指向的对象的成员所用的运算符是 __->____ 。
29. 假定用户没有给一个名为 shape 的类定义析构函数,则系统自动给出的缺
省析构函数定义为 ____shap::~shap(){}______ 。
30._构造函数__是特殊的成员函数,在创建和初始化对象时调用。
____静态成员_是局部于类的成员,它提供一种同类对象的__共享____机制。 31.运算符重载的作用是使运算符可以操作自定义的_类_,但重载后运算符原有的 操作_不变。
32.派生类不能访问基类的_私有_成员,但可以访问基类的公有成员和_保护_成员。
33.具有__纯虚拟函数_的类称为抽象类。
三、判断题
1.( F)基类中被说明为protected和private的成员只能被其派生类的成员函数访问,不能被其它的函数访问。
2.(F)break语句也可以用于if体内,它可退出if语句。
3.( F) 类的静态数据成员需要在定义每个类的对象时进行初始化。 4.(F)友元函数说明在类体内,它是一种成员函数。
5.(F)在传值调用中,要求实参和形参的类型完全一致并且个数相等。 6.(T) 如果派生类的成员函数的原型与基类中被定义为虚函数的成员函数原型相同,那么,这个函数自动继承基类中虚函数的特性。 7.(F)异常必须在其产生的当前函数中捕获,而不能在外层函数中捕获该异常。
8.(T) 如果派生类的成员函数的原型与基类中被定义为虚函数的成员函数原型相同,那么,这个函数自动继承基类中虚函数的特性。
9.( F) 类的静态数据成员需要在定义每个类的对象时进行初始化。
10.( T)程序的编译是以文件为单位的,因此将程序分到多个文件中可以减少每次对程序修改所带来的编译工作量。
11.( T)重载函数必须有不同的参数列表。
12.( T)类B从类A公有继承,则程序段A a;B &b=a;会引发编译错误。 13.(T)拷贝构造函数用于用类的一个对象去初始化该类的另一个对象时使用,也可已用于当函数的形参是类的对象,调用函数时,进行形参与实参结合时使用。
14.(T)类中所提供的成员函数可以直接访问私有成员。 15. ( T ) int i,*p=&i;是正确的C说明。 16.( F)析构函数不能被继承。
17.(F)一个类只有一个构造函数, 但可以有多个析构函数。 18.( F)引用和指针都可作函数参数。
19.( F)对于任意正确定义的类,都可以构造出该类型的对象。
20.( T) 若要实例化一个含有引用型数据成员的类,那么只能使用构造函数初始化列表来初始化该数据成员。
四、写出下列程序的运行结果
1、#include
using namespace std; class A{
friend double count(A&); public:
A(double t, double r):total(t),rate(r){} private: double total; double rate; };
double count(A& a){ a.total+=a.rate*a.total; return a.total; }
int main(void){ A x(80,0.5),y(100,0.2); cout< 运行结果: 120,120 180 2、#include static int counter; int obj_id; public: Count(); //constructor static void display_total(); //static function void display(); ~Count(); //destructor }; int Count::counter; //definition of static data member Count::Count() { counter++; obj_id = counter; } Count::~Count() { counter--; cout<<\ } void Count::display_total() { cout <<\void Count::display() { cout << \ } int main(void) { Count a1; Count::display_total(); Count a2, a3,a4; Count::display_total(); a2.display(); a4.display(); return 0; } 运行结果: Number of objects created is = 1 Number of objects created is = 4 Object ID is 2 Object ID is 4 Object number 4 being destroyed Object number 3 being destroyed Object number 2 being destroyed Object number 1 being destroyed 3、 #include { private: int date; static int count; } public: example(int y=10):date(y) { cout<<”date=”< static int display() {return count;} }; int example::count=0; void main() {example e1; example e2(20); cout< cout< 程序运行结果: date=10 date=20 2 2 2 4.#include class A{ public: A(); A(int i,int j); ~A(){cout<<\ void print(); private: int a,b; }; A::A() { a=b=10;cout<<\A::A(int i,int j) { a=i,b=j;cout<<\void A::print() {cout<<\void main() { A m,n(15,18); m.print(); n.print(); } Default constructor. Constructor. 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库c++ 期末练习题+答案(3)在线全文阅读。
相关推荐: