面向对象程序设计 14秋学期《面向对象程序设计》在线作业
一,单选题
1. 下列关于this指针的说法,错误的是()。
A. this指针指向当前正在操作的对象
B. this指针只存在于非静态成员函数中
C. 在成员函数中对非静态数据成员的访问是通过this指针完成的
D. 静态成员函数中可以通过this指针访问非静态成员
?
正确答案:D
2. 已知“int a=10,*p;int *&r=p; r=&a;*p=20;cout<<a;”,则输出为()。
A. 10
B. 20
C. 不确定值
D. 程序有错误
?
正确答案:B
3. 有关重载函数的描述正确的是()。
A. 函数名相同的函数就是重载函数
B. 函数名相同但返回值类型不同的函数就是重载函数
C. 函数名相同但参数个数或类型不同的函数就是重载函数
D. 函数功能相同的函数就是重载函数
?
正确答案:C
4. 在表达式x+y*z中,+ 是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的是()。
A. operator+有两个参数,operator*有两个参数
B. operator+有两个参数,operator*有一个参数
C. operator+有一个参数,operator*有两个参数
D. operator+有一个参数,operator*有一个参数
?
正确答案:C
5. 以成员函数方式重载运算符“>”,则obj1>obj2被C++编译器解释为()。
A. operator>(obj1,obj2)
B. >(obj1,obj2)
C. obj1.operator>(obj2)
D. obj2.operator>(obj1)
?
正确答案:C
6. 下列运算符中,()在C++中不能重载。
A. ?:指针调用成员函数
B. +
C. -
D. <=
?
正确答案:A
7. 运行以下程序时,如果由键盘输入65 14,则输出结果是()。 #include <iostream> using namespace std; int main() { int m, n; cout<<"Input m, n:"; cin>>m>>n; while(m!=n) { while(m>n) m-=n; while(n>m) n-=m; } cout<<m<<endl; return 0; }
A. 3
B. 2
C. 1
D. 0
?
正确答案:C
8. 变量的引用,其含义是指该变量的()。
A. 值
B. 类型
C. 别名
D. 地址
?
正确答案:C
9. 类对象占用内存的大小与()有关。
A. 数据成员
B. 成员函数
C. 数据成员和成员函数
D. 私有成员
?
正确答案:A
10. 单目运算符作为类成员函数重载时()。
A. 有形参
B. 没有形参
C. 有实参
D. 以上都不正确
?
正确答案:B
11. 下列关于运算符重载的描述中,正确的是()。
A. 运算符重载可以改变操作数的个数
B. 运算符重载可以改变运算符的优先级
C. 运算符重载可以改变运算符的结合性
D. 运算符重载可以使运算符实现特殊功能
?
正确答案:D
12. 假设堆内存分配均成功,则下面程序段完全正确的是()。
A. int *p=new int(3);cout<<*p;delete p;
B. int *p=new int[5]={1,2,3,4,5};for(int i=0;i<5;i++)cout<<p[i];delete []p;
C. int *p=new int[5];for(int i=0;i<5;i++,p++) {*p=i; cout<<*p;}delete []p;
D. 以上程序段均正确
?
正确答案:A
13. 已知“int a=10,b=8;int &r=a; r=b;cout<<a<<","<<b<<","<<r;”,则输出为()。
A. 10,8,10
B. 10,8,8
C. 8,8,10
D. 8,8,8
?
正确答案:D
14. 面向对象程序设计方法以()为中心进行分析和设计。
A. 结构
B. 模块
C. 对象
D. 类
?
正确答案:C
15. 将一个string类对象赋予新值,应该使用string类的()函数。
A. assign
B. insert
C. swap
D. find
?
正确答案:A
16. 下列关于赋值运算符重载的说法中正确的是()。
A. 返回值一般是以引用方式返回的对象,而函数体中总是用语句“return *this;”返回this 指针所指向的对象
B. 赋值运算符只能以非成员函数的方式重载
C. 赋值运算符既可以以成员函数的方式重载,又可以以非成员函数的方式重载
D. 以上均不正确
?
正确答案:A
17. 类的默认的无参构造函数()。
A. 在任何情况下都存在
B. 仅当未定义无参构造函数时存在
C. 仅当未定义有参构造函数时存在
D. 仅当未定义任何构造函数时存在
?
正确答案:D
18. 下列关于成员函数特征的描述中,错误的是()。
A. 成员函数可以重载
B. 成员函数一定是内联函数
C. 成员函数可以设置参数的默认值
D. 成员函数可以是静态的
?
正确答案:B
19. 以下为重载函数的一组函数声明的是()。
A. void print(int); void print(double);
B. void fun(int); int fun(int);
C. int max(int,int); int min(int,int);
D. void mm(); int mm();
?
正确答案:A
20. 执行语句“string str("abc");”时,系统会自动调用string类的构造函数()。
A. string()
B. string(const char *s)
C. string(const string &str)
D. string(size_type n, char c)
?
正确答案:B
21. 静态数据成员初始化在()进行,而且前面不加static,以免与一般静态变量或对象相混淆。
A. 类体内
B. 类体外
C. 构造函数内
D. 内联函数内
?
正确答案:B
22. 类aClass的定义如下: class aClass {public: aClass(){} aClass(int i){value=new int(i);} int *value; } 若要对类中的value赋值,则下面的语句中,正确的是()。
A. aClass my; my.value=10;
B. aClass my; *my.value=10;
C. aClass my; my.*value=10;
D. aClass my(10);
?
正确答案:D
23. 下面叙述中错误的是()。
A. 派生类可以使用private派生
B. 对基类成员的访问必须是无二义性的
C. 基类成员的访问能力在派生类中维持不变
D. 赋值兼容规则也适用于多继承的组合
?
正确答案:C
24. 在一个string类对象表示的字符串中插入新字符,应该使用string类的()函数。
A. assign
B. insert
C. swap
D. find
?
正确答案:B
25. 程序在调用重载函数时,根据()区分到底要调用哪个函数。
A. 函数名
B. 返回值类型
C. 参数个数和类型
D. 以上都可以
?
正确答案:C
26. 有如下类声明: class Sample { int x; }; 则Sample类成员x是Sample类的()。
A. 公有数据成员
B. 保护数据成员
C. 私有数据成员
D. 以上选项都不正确
?
正确答案:C
27. 下列关于继承的描述中,错误的是()。
A. 基类中的析构函数不能被派生类继承