跳转至

练习06-数组和指针

练习06-数组和指针

题量: 20 满分: 100
作答时间:04-29 19:37 至_05-30 19:37_

1.(单选题) 下列关于this指针的描述中,正确的是( )。

  • A. 类的成员函数都有this指针
  • B. 类的友元函数都有this指针
  • C. 任何与类相关的函数都有this指针
  • D. 类的非静态成员都有this指针

2.(单选题) 下列程序段中包含4个函数,其中具有隐含this指针的是( )

int fun1();  
class Test  
public:  
  int fun2();  
  friend int fun3();  
  static int fun4();  
;  
- A. fun1
- B. fun2
- C. fun3
- D. fun4

3.(单选题) 下列关于this的描述中,错误的是( )。

  • A. this是一个由系统自动生成的指针
  • B. this指针在用对象引用成员函数时系统创建的
  • C. this指针是指向对象的
  • D. this指针只能隐含使用,不能显式使用

4.(单选题) 若PAT是一个类,则程序运行时,语句“PAT(*ad)[3];”调用PAT的构造函数的次数是( )。

  • A. 0
  • B. 1
  • C. 2
  • D. 3

5.(单选题) 下列关于运算符delete的描述中,错误的是( )。

  • A. 使用该运算符可以释放用new运算符创建的对象或对象数组
  • B. 使用该运算符可以释放所有对象
  • C. 使用delete运算符时会自动调用析构函数
  • D. 用它释放对象数组时,它作用的指针名前要加下标运算符[ ]

6.(单选题) MyClass是一个类,对于声明MyClass a, b[2], *p[2]; 则类MyClass的构造函数的执行次数是( )。

  • A. 2次
  • B. 3次
  • C. 4次
  • D. 5次

7.(单选题) AA类有公有数据成员a,px为指向AA类对象指针,则访问px所指对象中数据成员a的格式为( )。

  • A. px(a)
  • B. px[a]
  • C. px.a
  • D. px->a

8.(单选题) AA类有公有函数a,x为AA类的对象,则通过x访问函数成员a的格式为( )。

  • A. x.a
  • B. x.a()
  • C. x->a
  • D. x->a()

9.(单选题) 执行语句Sample a[2], *p = new Sample;后,调用Sample类的构造函数的次数是( )。

  • A. 0
  • B. 1
  • C. 2
  • D. 3

10.(单选题) 要定义一个引用变量p,使之引用类myclass的一个对象,正确的定义语句是( )。

  • A. myclass p=myclass;
  • B. myclass p=new myclass;
  • C. myclass &p=new myclass;
  • D. myclass a,&p=a;

11.(单选题) p是指向A类公有数据成员b的指针,a是A类对象。下列表达式中,( )能给成员b正确赋值。

  • A. a.p=5
  • B. a->p=5
  • C. a.*p=5
  • D. *a.p=5

12.(单选题) 若MyClass是一个类名,且有如下语句序列

MyClass c1,*c2;  
MyClass *c3=new MyClass;  
MyClass &c4=c1;  
上面的语句序列所定义的类对象的个数是( )。
- A. 1
- B. 2
- C. 3
- D. 4

13.(单选题) 已知类MyClass的定义如下:

class MyClass                  int  data;  
public:   
  MyClass( int d )   data=d;   
~MyClass()      
;  
下列对MyClass类对象数组的定义和初始化语句中,正确的是( )。
- A. MyClass array[2];
- B. MyClass array[2]={ MyClass(5)};
- C. MyClass array[2]={ MyClass(5), MyClass(6) };
- D. MyClass *array[2]=new MyClass[2];

14.(单选题) 如下程序的输出结果是( )。

#include<iostream>  
using namespace std;  
class MyClass       public 
  MyClass(int i=0)    cout<<1;      
MyClass(const MyClass &x)    cout<<2;    
MyClass& operator=(const MyClass&x)   cout<<3;  return *this;    
~MyClass()     cout<<4;     
};  
int  main()   
  MyClass objl(1), obj2(2), obj3(objl);    
  
- A. 112444
- B. 11114444
- C. 121444
- D. 11314444

15.(单选题) 下列程序的运行结果是( )。

#include<iostream>  
using namespace std;  
class CD        public:    
  ~CD()  cout<< 'C';     
private:  
  char name[80];  
;  
int main()        
  CD a,*b,d[2];    
  
- A. CCCC
- B. CCC
- C. CC
- D. C

16.(单选题) 下列程序的运行结果是( )。

#include<iostream>  
using namespace std;  
class Monkey     public:    
  Monkey()    cout<<'M';  
Monkey(char n)cout<<n;  
~Monkey()  cout<<'Y';  
;  
int main()    
  Monkey p1,*p2=new Monkey('X');  
  delete p2;  
  
- A. MYX
- B. MYMY
- C. MXY
- D. MXYY

17.(单选题) 类MyClass的定义如下:

class MvClass     public:    
  MyClass()  value=0;   
void SetVariable(int i)   value=i;    
private:  
  int value;  
};  
int main()  
  MyClass *p, my;   
  p=&my;  
  
则对下列语句序列正确的描述是( )。
- A. 语句p=&my;是把对象my赋值给指针变量P
- B. 语句MyClass p,my;会调用两次MyClass类的构造函数
- C. 对语句
p.SetVariable(5)的调用是正确的
- D. 语句p->SetVariable(5)与语句my.SetVariable(5)等价

18.(单选题) 在如下类定义的空白处应填写的表达式是( )。

class A   
char *a;  
public:  
  A():a(0)     
A(char *aa)    //把aa所指字符串拷贝到a所指向的存储空间  
a=(         );  strcpy(a,aa);    
~A()    delete []a;    
;  
- A. new char[strlen(aa)+1]
- B. char[strlen(aa)+1]
- C. char[strlen(aa)]
- D. new char[sizeof(aa)-1]

19.(单选题) 如下程序输出符号?的个数是( )。

#include<iostream>  
using namespace std;  
class Name  
char name[20];  
public:  
  Name()   strcpy(name,""); cout<<'?';   
Name(char *fname) strcpy(name,fname);  cout<<'?';   
;  
int main()    
  Name names[3]=Name("张三"),Name("李四");    
- A. 0
- B. 1
- C. 2
- D. 3

20.(单选题) 如下程序输出星号(*)的个数为( )。

#include<iostream>  
using namespace std  
class Sample  
public:  
  Sample()    
~Sample()  cout<<*’;    
};  
int main()  
  Sample temp[2], *pTemp[2]  
  
- A. 1
- B. 2
- C. 3
- D. 4


练习06-数组和指针答案

正确答案列表:

  1. D
  2. B
  3. D
  4. A
  5. B
  6. B
  7. D
  8. B
  9. D
  10. D
  11. C
  12. B
  13. C
  14. A
  15. B
  16. D
  17. D
  18. A
  19. D
  20. B