当前位置:首页 > 习题
}
cout<<\//or &main cout<<\cout<<\cout<<\cout<<\cout<<\delete ptr;
/* Results:
code address:0x00401014 global datum address:0x00428D64 local datum address:0x0012FF7C pointer address:0x0012FF78 heap address:0x00431AE0 datum in heap:8 */
data位于_______、i位于_______、ptr位于_______、*ptr位于_______、main( )位于_______。
第三章思考题
(一) 选择填空:
(1) 关于类定义格式的描述中,( )是错的:
i. A. 一般类的定义格式可分为类的说明(也称类的接口)部分和成员函数定义
(也称类的实现)部分共两部分,有时这两部分也可合并为一个统一的类的定义。
B. 类中一般包含有数据成员和成员函数两部分。
C. 类对象的内存存储内容中,所有数据(包括静态数据成员和非静态数据成员)都存于内存数据区内。
D. 类对象的成员函数的代码部分都存于内存代码区内。 (2) 关于类成员的描述中,( )是错的:
A. 类中可以说明或定义一个或多个成员函数。 B. 类中的成员函数只能定义在类体外。
C. 在类体外使用数据成员时,须使用类名及作用域运算符(::)来指明(限
定)该数据成员(例如base::a)。
(3) 在类的静态成员的描述中,( )是错的:
A. 静态成员分为静态数据成员和静态成员函数。 B. 静态数据成员声明后必须在类体外进行初始化。 C. 静态数据成员初始化不使用其构造函数。
D. D. 静态成员函数可以不使用类名和作用域运算符而直接访问该类的一个对象的非静态成员。 (4) 在友元的描述中,( )是错的:
A. 一个类的友元函数是该类的成员函数。 B. 友元函数可直接访问类中的私有成员。 C. 友元函数损害封装性,应限用。
D. 友元类中的所有成员函数都是友元函数。 (5) 在有关类和对象的描述中,( )是错的: A. 对象是类的一个实例。
B. 任何一个对象只能属于一个类。
C.类和对象的关系与数据类型和变量的关系相似。 D.一个类只能有一个对象。
(6) 下列关于对象数组的描述中,( )是错误的。
A. 对象数组只能赋初值而不能再赋值。
B. 对象数组的下标(序号)从0开始。 C. 对象数组的每个元素都是相同类的对象。 D. 对象数组的数组名是一个常量指针。
(7) 下列关于子对象的描述中,( )是错误的。
A. 子对象是另一个类(复合类)的一个数据成员。 B. 子对象不可以是本复合类的对象而应是其它类的对象。
C. 对子对象的初始化必须通过构造函数中的初始化列表。
D. 一个类中只能含有一个子对象作其成员。
(8) 在new运算符的下列描述中,( )是错误的。
A. 它可以为创建对象或对象数组而动态地在堆区申请分配空间。 B. 用它创建对象数组时必须指定初始值。
C. 当构造函数使用它在堆区内创建对象或对象数组时,在程序结束前应使用运算符delete来释放所分配的堆区空间。 (9) 在delete运算符的下列描述中,( )是错误的。
A. 用它可以释放用new运算符创建的为对象或对象数组分配的堆区空间。 B. 用它释放一个对象的堆空间时,它作用于一个new所返回的指针。 C. 用它释放一个对象数组的堆空间时,它作用的指针名前须加下标运算符 [ ]。 D. 用它释放一个对象的堆空间时,它同时删除new运算符所使用的指针。
(二)判断下列各种描述是否正确,对者划√,错者划 ?
(1) 建立一个类的对象时,系统将其非静态数据成员存储于该对象的栈区存储空间内。而该类的静态数据成员和成员函数代码则分别存储于数据区和代码区内。 (2)如果一个成员函数只访问一个类的静态数据成员,则可将该成员函数定义为静态成员函数。
(3)可在类的构造函数的初始化列表中对该类的静态数据成员进行初始化。
(三)给出以下程序的运行结果:
// exer_3_3.cpp #include
static int c;
public: }; int C::c;
C( ) {
cout<<++c< static int Getc( ) { return c; { } } ~C( ) cout< void main( ) { C c1, c2, c3; //创建类的时候所有的构造函数会执行一遍 在类消失的时候析 构函数会执行一遍 先创建的后执行后创建的先执行 } Result /* 1 2 3 3 */ cout< (四)给出以下程序的运行结果: // exer_ch3_4.cpp #include int m1, m2; public: }; M(int i, int j) { m1=i; m2=j; } void Sum(M a, M b) { } void print( ) { cout<<\ m1=a.m1+b.m1; m2=a.m2+b.m2;
共分享92篇相关文档