练习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指针的是( )
- 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是一个类名,且有如下语句序列
上面的语句序列所定义的类对象的个数是( )。- A. 1
- B. 2
- C. 3
- D. 4
13.(单选题) 已知类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);
}
- 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];
}
- 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;
}
- 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; }
};
- 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("李四")}; }
- 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];
}
- B. 2
- C. 3
- D. 4
练习06-数组和指针答案
正确答案列表:
- D
- B
- D
- A
- B
- B
- D
- B
- D
- D
- C
- B
- C
- A
- B
- D
- D
- A
- D
- B