欢迎来到天天文库
浏览记录
ID:38480920
大小:95.00 KB
页数:12页
时间:2019-06-13
《面向对象 课后答案 第6章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.概念填空题1.1 数组定义时有3个要素:数组名、数组元素的类型和数组元素的 个数。按元素在数组中的位置进行访问,是通过下标进行的,称为直接 或索引访问。1.2 C++中的多维数组是嵌套定义的,即多维数组的基本定义是数组构成的数组,三维数组的元素是二维数组 。1.3 计算机内存是一维编址的,多维数组在内存中的存储必须转换为一维方式,C++多维数组在内存中的排列是行方式,即越低 的下标变化 快。设数组a有m行n列,每个元素占内存u个字节,则a[i][j]的首地址为a[0][0]的地址+(i*n+j)*u。1.4数组名是整型 常量,数组名赋
2、给同类型的指针后,该指针是指向数组首元素 的指针。数组名在表达式中被转换为指向数组首元素 的指针常量。1.5每个对象都有一个指向自身的指针,称为this指针,通过使用它来确定其自身的地址。该指针只能读,不能写。1.6在C++中,对象访问成员所用的运算符是.,通过指针访问对象的成员所用的运算符是->。1.7 当动态分配失败时,系统采用返回NULL来表示发生了异常。如果new返回的指针丢失,则所分配的自由存储区空间将无法收回,称为 内存泄漏 。这部分空间必须在计算机重启才能找回,这是因为无名对象的生命期为整个程序 。1.8默认复制构造函数只能完
3、成对象成员的赋值 ,可能会造成重复释放,默认的析构函数可能会产生内存泄漏。“=”运算也会产生对象重复释放 。因此我们需要自定义复制构造函数完成对象的深复制 。1.9在用new运算符建立一个三维数组int4*5*6,使用了3个下标运算符,用delete运算符释放该数组时使用了1个下标运算符。new返回的指针类型是int(*)[5]6]。2 简答题2.1用一维数组名作函数参数和用一维数组元素函数参数的含义是否相同?为什么2.2指针变量与整型量的加减运算代表什么意义?2.3个指向普通变量的指针进行减运算是否有意义?为什么2.4什么是浅拷贝?什么是
4、深拷贝?二者有何异同?何时必须自定义复制构造函数、析构函数,何时必须自定义=运算符中在函数,自定义的复制构造函数、析构函数应该怎样设计?2.5从右往左解释int *(*(*pf)[5])(double*)中4个*的含义。2.6为什么动态建立类对象数组时,类的定义中一定要有默认的构造函数?3.选择题3.1以下对一维数组a的正确定义是(C)。 A.intn=5,a[n]; B.inta(5); C.constintN=5;inta[N]; D.intn;cin>>n;inta[n];3.2己知inta[10]=={0,1,2
5、,3,4,5,6,7,8,9},*p=a;则不能表示数组a中元素的选项是(C)。 A.*a B.*p C.a D.a[p-a]3.3己知inta[]={0,2,4,6,8,10},*p=a+1;其值等于0的表达式是(D)。 A.*(p++) B.*(++p) C.*(p--) D.*(--p)3.4已知char*a[]=("fortran",”basic","pascal","Java",”c++”;则语句cout<6、 D.javac++3.5下列关于this指针的叙述中,正确的是(D)。 A.任何与类相关的函数都有this指针 B.类的成员函数都有this指针 C.类的友元函数都有this指针 D.类的非静态成员函数才有this指针3.6对于类型相同的两个指针变量之间,不能进行的运算是(C)。 A.< B.= C.+ D.-3.7若有语句inta=4,*point=&a;下面均代表地址的一组选项是(D)。 A.a,point,*&a B.&*a,&a,*point C.*&point,*point,&a 7、 D.&a,&*point,point3.8已有定义intk=2;int*ptrl,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是(B)。 A.k=*ptrl+*ptrl2; B.ptr2=k; B.ptr1=ptr2 D.k=*ptr1*(*ptr2);3.9设有语句intarray[3][4];,则在下面几种引用下标为i和j的数组元素的方法中,不正确的引用方式是(D)。 A.array[i][j] B.*(*(array+i)+j) C.*(array[i]8、+j) D.*(array+i*4+j)3.10函数原型为fun(int(*p)[3],int),调用形式为fun(a,2),则a的定义应该为(C)。 A.int**
6、 D.javac++3.5下列关于this指针的叙述中,正确的是(D)。 A.任何与类相关的函数都有this指针 B.类的成员函数都有this指针 C.类的友元函数都有this指针 D.类的非静态成员函数才有this指针3.6对于类型相同的两个指针变量之间,不能进行的运算是(C)。 A.< B.= C.+ D.-3.7若有语句inta=4,*point=&a;下面均代表地址的一组选项是(D)。 A.a,point,*&a B.&*a,&a,*point C.*&point,*point,&a
7、 D.&a,&*point,point3.8已有定义intk=2;int*ptrl,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是(B)。 A.k=*ptrl+*ptrl2; B.ptr2=k; B.ptr1=ptr2 D.k=*ptr1*(*ptr2);3.9设有语句intarray[3][4];,则在下面几种引用下标为i和j的数组元素的方法中,不正确的引用方式是(D)。 A.array[i][j] B.*(*(array+i)+j) C.*(array[i]
8、+j) D.*(array+i*4+j)3.10函数原型为fun(int(*p)[3],int),调用形式为fun(a,2),则a的定义应该为(C)。 A.int**
此文档下载收益归作者所有