(1)关于运算符重载,下列表述中正确的是( )。
A)c++已有的任何运算符都可以重载
B)运算符函数的返回类型不能声明为基本数据类型
C)在类型转换符函数的定义中不需要声明返回类型
D)可以通过运算符重载来创建c++中原来没有的运算符
答案:C
(2)有如下程序:
#nclude
using namespace std;
int main()
{
void function(double val);
double val;
function(val);
cout<<VAL;< p>
return 0;
}
void function(double val)
} val=3;}
编译运行这个程序将出现的情况是( )。
A)编译出错,无法运行
B)输出:3
C)输出:3.0
D)输出一个不确定的数
答案:D
(3)下列情况中,不会调用拷贝构造函数的是( )。
A)用一个对象去初始化同一类的另一个新对象时
B)将类的一个对象赋值给该类的另一个对象时
C)函数的形参是类的对象,调用函数进行形参和实参结合时
D)函数的返回值是类的对象,函数执行返回调用时
答案:B
(4)以下关键字不能用来声明类的访问权限的是( )。
A)public
B)static
C)protected
D)private
答案:B
(5)由于常对象不能被更新,因此( )。
A)通过常对象只能调用它的常成员函数
B)通过常对象只能调用静态成员函数
C)常对象的成员都是常成员
D)通过常对象可以调用任何不改变对象值的成员函数
答案:A
(6)下列有关继承和派生的叙述中,正确的是( )。
A)如果一个派生类公有继承其基类,则该派生类对象可以访问基类的保护成员
B)派生类的成员函数可以访问基类的所有成员
C)基类对象可以赋值给派生类对象
D)如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类
答案:D
(7)在公有继承的情况下,允许派生类直接访问的基类成员包括( )。
A)公有成员
B)公有成员和保护成员
C)公有成员、保护成员和私有成员
D)保护成员
答案:B
(8)有如下程序:
#include
using namespace std;
classBase{
public:
void fun(){
__________________
cout<<”Base::fun”<<ENDL;}< p>
};
class Derived:public Base{
public:
voidfun(){
cout<<”Derived::fun”<<ENDL:< p>
}
};
int main(){
Derived d;
d.fun();
return 0;
}
已知其执行后的输出结果为:
Base::fun
Derived::fun
则程序中下画线处应填人的语句是( )。
A)Base.fun();
B)Base::fun();
C)Base—>fun();
D)fun();
答案:B
(9)有如下程序:
#include
using namespace std;
class MyClass{
public:
MyClass(){cout<<’A’;}
MyClass(char C){cout<<C;}< p>
~MyClass(){cout<<’B’;}
};
int main(){
MyClass pl,+p2;
p2=new MyClass(’X’);
delete p2;
return 0;
}
执行这个程序的输出结果是( )。
A)ABX
B)ABXB
C)AXB
D)AXBB
答案:D
(10)有如下程序:
#include
using namespace std;
int i=1;
class Fun{
public:
static int i;
int value(){return i—l;}
int value()const{return i+1;}
};
int Fun::i=2;
int main(){
int i=3;
Fun funl;
const Fun fun2:
__________________
return 0;
}
若程序的输出结果是:
123
则程序中下画线处遗漏的语句是( )。
A)cout<<FUNL.VALUE()<<FUN::I<<FUN2.VALUE();< p>
B)tout<<FUN::I<<FUNL.VALUE()<<FUN2.VALUE();< p>
C)cout<<FUNL.VALUE()<<FUIL2.VALUE()<<FUN::I:< p>
D)eout<<FUN2.VALUE()<<FUN::I<<FUNL.VALUE();< p>
答案:A
点击加载更多评论>>