在下列函数原型中,可以作为类AA构造函数的是()
A
void AA(int);
B
int AA( );
C
AA(int) const;
D
AA(int);
答案:D。
题解:定义构造函数不用类型,且不能被const修饰。
2. (单选题, 11分)
关于成员函数特征的下述描述中,()是错误的。
A
成员函数一定是内联函数
B
成员函数可以重载
C
成员函数可以设置参数的默认值
D
成员函数可以是静态的
答案:A。
题解:不一定是。。。
3. (单选题, 11分)
下列关于构造函数的说法错误的是( )。
A
构造函数的名字必须与类的名字相同
B
构造函数可以定义为void类型
C
构造函数可以重载、可以带有默认参数
D
构造函数可以由用户自定义也可以由系统自动生成
答案:B。
题解:构造函数不能定义为任何类型。
4. (单选题, 11分)
有如下类声明:
class student
{
int age;
char *name;
};
则student类的成员age是( )。
- A. 公有数据成员
- B. 私有数据成员
- C. 保护数据成员
- D. 私有成员函数
正确答案: B
5. (单选题, 11分)
#include<iostream.h>
class point
{
int x,y;
public:
point():x(0),y(0){}
point(int x1,int y1=0):x(x1),y(y1){}
};
若执行语句
point a(2),b[3],*c;
则point类的构造函数被调用的次数是( )。
- A. 2次
- B. 3次
- C. 4次
- D. 5次
我的答案: C正确答案: C
题解:point a(2)调用一次,point b[3]时调用三次,至于指针,
C++中如果声明一个对象指针时没有分配内存,那么不会调用构造函数
6. (单选题, 11分)
有如下程序
#include <iostream>
using namespace std;
class AA{
int n;
public:
AA(int k):n(k){ }
int get( ){ return n;}
int get( )const{ return n+1;}
};
int main( )
{
AA a(5);
const AA b(6);
cout<<a.get( )<<b.get( );
return 0;
}
运行该程序结果为( )。
- A. 56
- B. 57
- C. 67
- D. 66
正确答案: B
答案解析:
常对象调用常成员函数
7. (单选题, 11分)
运行下列程序结果为____________________。
#include<iostream>
#include<iomanip>
using namespace std;
class MyClass{
public:
MyClass(){cout<<'A';}
MyClass(char c){cout<<c;}
~MyClass(){cout<<'B';}
};
int main(){
MyClass p1,*p2;
p2=new MyClass('X');
delete p2;
return 0;
}
执行这个程序幕上将显示输出______。
- A. ABX
- B. ABXB
- C. AXB
- D. AXBB
正确答案: D
题解:本题目考核构造函数和析构函数的调用
二. 多选题(共1题,11分)
8. (多选题, 11分)
在下列哪种情况下会调用拷贝构造函数( )。
- A. 用一个对象去初始化本类的另一个对象时。
- B. 函数的形参是类的对象,在进行形参和实参的结合时。
- C. 函数的返回值是类的对象,函数执行完返回时。
- D. 将类的一个对象赋值给另一个本类的对象时。
正确答案: ABC
三. 简答题(共1题,11.1分)
9. (简答题, 11.1分)
#include<iostream>
using namespace std;
class MyClass {
public:
int number;
void set(int i);
};
int number=3;
void MyClass::set (int i){
number=i;
}
void main( ){
MyClass my1;
int number=10;
my1.set(5);
cout<<my1.number<<endl;
my1.set(number);
cout<<my1.number<<endl;
my1.set(::number);
cout<<my1.number;
}
正确答案:
5
10
3
题解:“::”修饰变量,当全局变量在局部函数中与其中某个变量重名,那么就可以用::来区分