C.子对象的初始化要包含在构造函数中 D.一个类中只能有一个子对象 6.执行下列说明语句,其调用构造函数的次数为( A )。
A a[5],*p[2];其中,A是一个类名
A.5 B.6 C.7 D.10 7.下列关于运算符new的描述中,错误的是( D )。 A.它可以创建对象或变量
B.它可以创建对象数组或一般类型数组
C.用它创建对象或对象数组时要调用相应的构造函数 D.用它创建的对象可以不用delete运算符释放
8.下列关于运算符delete的描述中,错误的是( B )。
A.使用该运算符可以释放用new运算符创建的对象或对象数组 B.使用该运算符可以释放所有对象
C.使用delete运算符时会自动调用析构函数
D.用它释放对象数组时,它作用的指针名前要加下标运算符[ ] 9.定义不同存储类对象时,必须要加的存储类说明符是( C )。 A.auto B.extern C.statie D.register 10.下列关于this的描述中,错误的是( D )。
A.this是一个由系统自动生成的指针 B.this指针是指向对象的
C.this指针在用对象引用成员函数时系统创建的 D.this指针只能隐含使用,不能显式使用
7.3 填空题
已知:class A{ public:A (int i) { a=i;}
void print( ) { cont<
要求:
1.定义一个指向对象的常指针p,应该是 A *const p; 。 2.定义一个指向常对象指针p,应该是 A const *p; 。
3.定义类A的含有5个元素的一维对象数组a,应该是 A a[5]; 。
4.定义一个对象指针数组pa,它有5个元素,每个元素是类A对象指针,应该是 A *pa[5]; 。 5.使用new创建一个堆对象,一个实参值为5,应该是 A *p; p=new A(5); 。
6.使用new创建一个对象数组,该数组用指针pa指向,并使数组的3个元素都是类A的对象a1的值。应该是 A a1,*pa; pa=new A[3]; pa[0]=pa[1]=pa[2]=a1; 。
7.在某个函数体内定义一个静态类的对象sa,应该是 static A sa; 。
8.定义一个类A的对象a1,并给它赋值,其实参值为8,应该是 A a1(8); 。
7.4 分析下列程序的输出结果 1.
#include
11
A() { a=0;
cout<<\ } ~A()
{ cout<<\ } void Print()
{ cout<
A a[4],*p; int n=1; p=a;
for(int i=0;i<4;i++) a[i]=A(++n); for(i=0;i<4;i++) (p+i)->Print(); }
答: Default constructor called. 0 Default constructor called. 0 Default constructor called. 0 Default constructor called. 0 Destructor called. 2 Destructor called. 3 Destructor called. 4 Destructor called. 5 2 3 4 5
Destructor called. 5 Destructor called. 4 Destructor called. 3 Destructor called. 2
2.
#include
public:
12
B(int i) { b=i; } B() {
b=0;
cout<<\ } ~B()
{ cout<<\ } void Print()
{ cout<
B *pb[4]; int n=1;
for(int i=0;i<4;i++) pb[i]=new B(n++); for(i=0;i<4;i++) pb[i]->Print(); for(i=0;i<4;i++) delete *(pb+i); } 答: 1 2 3 4
Destructor called. 1 Destructor called. 2 Destructor called. 3 Destructor called. 4
3.
#include
cout<<\ }
13
~C()
{ cout<<\ } void Print()
{ cout< void main() { C *p; p=new C[4]; int n=1; for(int i=0;i<4;i++) p[i]=C(n++); for(i=0;i<4;i++) p[i].Print(); delete []p; } 答: Default constructor called. 0 Default constructor called. 0 Default constructor called. 0 Default constructor called. 0 Destructor called. 2 Destructor called. 3 Destructor called. 4 Destructor called. 5 2 3 4 5 Destructor called. 5 Destructor called. 4 Destructor called. 3 Destructor called. 2 4. #include d1=d2=0; cout<<\ } D(int i,int j) { 14 d1=i; d2=j; cout<<\ } ~D() { cout<<\ } void Set(int i,int j) { d1=i;d2=j; } private: int d1,d2; }; void main() { int n(10),m(20); D d[4]={D(5,7),D(3,6),D(7,9),D(1,4)}; for(int i=0;i<4;i++) d[i].Set(n++,m++); } 答: Constructor called. d1=5,d2=7 Constructor called. d1=3,d2=6 Constructor called. d1=7,d2=9 Constructor called. d1=1,d2=4 Destructor called. d1=13,d2=23 Destructor called. d1=12,d2=22 Destructor called. d1=11,d2=21 Destructor called. d1=10,d2=20 5. #include public: E(int i,int j) { e1=i; e2=j; cout<<\ } void FunE(E *e) { e1=e->e1; e2=e->e2; cout<<\ } void FunE(E &e) { e1=e.e1; e2=e.e2; cout<<\ } private: 15 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C++习题与解答(3)在线全文阅读。
相关推荐: