1、一、 单项选择题。 1引入内联函数的主要目的是 A)缩短程序代码, 少占用内存空间 B.既能够保证程序的可读性, 又能提高程序的运行效率 C)提高程序的执行速度 D)使程序的结构比较清晰 2重载函数是 A)以函数参数来区分, 而不用函数的返回值来区分不同的函数 B.以函数的返回值来区分, 而不用函数参数来区分不同的函数 C)参数表完全相同而返回值类型不同的两个或多个同名函数 D)参数表和返回值类型都必须是不同的两个或多个同名函数 3有函数原型 void fun2 (int *), 下面选项中, 正确的调用是 A) double x = 2.17; fu
2、n2 (&x); C) int a = 15; fun2 (a*3.14); B) int b = 100; fun2 (& b); D) fun2 (256); 4在C++中,要实现动态联编,必须使用( )调用虚函数。 A) 类名 B) 派生类指针 C)对象名 D) 基类指针 5 在公有派生情况下, 有关派生类对象和基类对象的关系, 下列叙述不正确的是 A)派生类的对象能够直接访问基类中的所有成员 B)派生类的对象能够初始化基类的引用 C)派生类的对象能够赋给基类的对象 D) 派生类的对象的地址能够赋给指向基类的指针 6设
3、置虚基类的目的是 A)消除两义性 B) 简化程序 C)提高运行效率 D)减少目标代码 7关于构造函数, 以下说法错误的是 A) 构造函数的作用是在对象被创立时使用特定的值构造对象, 或者说将对象 初始化为一个特定的状态。在对象创立时由系统自动调用。 B) 基类的构造函数能够被派生类所继承。 C) 如果程序中未声明, 则系统自动产生出一个缺省形式的构造函数。 D) 允许为内联函数、 重载函数、 带缺省形参值的函数。 8下列关于C++函数的说明中, 正确的是 A)内联函数就是定义在另一个函数体内部的函数 B)函数体的最后一条语句必须是return语句 C
4、)标准C++要求在调用一个函数之前, 必须先声明其原型 D)编译器会根据函数的返回值类型和参数表来区分函数的不同重载形式 9 由于常对象不能被更新, 因此 A)经过常对象只能调用它的常成员函数 B)经过常对象只能调用静态成员函数 C)常对象的成员都是常成员 D)经过常对象能够调用任何不改变对象值的成员函数 10下列关于虚函数的说明中, 正确的是 A)从虚基类继承的函数都是虚函数 B)虚函数不得是静态成员函数 C)只能经过指针或引用调用虚函数 D)抽象类中的成员函数都是虚函数 11 运算符重载是对已有的运算符赋予多重含义, 因此 A)能够对基本类型(如int类型)的数据,
5、重新定义”+”运算符的含义 B)能够改变一个已有运算符的优先级和操作数个数 C)只能重载C++中已经有的运算符, 不能定义新运算符 D)C++中已经有的所有运算符都能够重载 12模板对类型的参数化提供了很好的支持, 因此 A)类模板的主要作用是生成抽象类 B)类模板实例化时, 编译器将根据给出的模板实参生成一个类 C)在类模板中的数据成员都具有同样类型 D)类模板中的成员函数都没有返回值 13下列符号中能够用作C++标识符的是 A)_radius B)foo~bar C)else D)3room 14下列语句中, 错误的是 A)const int
6、buffer=256; B)const int temp;
C)const double *point; D)const double *rt =new double(5.5);
15有如下程序:
int x=3;
do{
x -= 2;
cout<
7、
cout<<"The value at p:"<<*p;
return 0;
}
编译运行程序将出现的情况是
A)够编译时出现语法错误, 不能生成可执行文件
B)运行时一定输出: The value at p: 9
C)运行时一定输出: The value at p: *9
D)运行时有可能出错
17 有如下程序:
#include 8、turn 0;
}
void function(double val)
{
val = 3;
}
编译运行这个程序将出现的情况是
A)编译出错, 无法运行 B)输出: 3
C)输出: 3.0 D)输出一个不确定的数
18 有如下类定义:
class AA
{
int a;
public:
int getRef() const{ return &a; } //①
int getValue() const{ return a; } //②
void set(int n) const{ a=n; } //③
frie 9、nd void show(AA aa) const {cout< 10、
}
};
int main()
{
Derived d;
________________;
d.fun();
return 0;
}
已知其执行后的输出结果为:
Base::fun
Derived::fun
则程序中下划线处应填入的语句是
A)Base.fun(); B)Base::fun() C)Base->fun() D)fun();
20下面是重载为非成员函数的运算符函数原型, 其中错误的是
A)Fraction operator + (Fraction, Fraction);
B)Fraction operator - ( 11、Fraction);
C)Fraction& operator = (Fraction&, Fraction);
D)Fraction& operator += (Fraction&, Fraction);
21有如下类定义:
class Foo
{
public:
Foo(int v):value(v){} //①
~Foo(){} //②
private:
Foo(){} //③
int value = 0; //④
};
其中存在语法错误的行是
A)① B)② C)③ D)④
22 有如下类定义:
class Point
{
int x_, 12、y_;
public:
Point():x_(0), y_(0){}
Point(int x, int y = 0):x_(x),y_(y){}
};
若执行语句 Point a(2), b[3], *c[4];
则Point类的构造函数被调用的次数是
A)2次 B)3次 C)4次 D)5次
23有如下程序:
#include 13、 p;
public:
B(){cout<<"B"; p = new A();}
~B(){cout<<"~B"; delete p;}
};
int main()
{
B obj;
return 0;
}
执行这个程序的输出结果是
A)BAA~A~B~A B)ABA~B~A~A
C)BAA~B~A~A D)ABA~A~B~A
24有如下程序:
#include 14、tected:
void fun2() const{cout<<"fun2";}
public:
void fun3() const{cout<<"fun3";}
};
class Derived: protected Base
{
public:
void fun4() const{cout<<"fun4";}
};
int main()
{
Derived obj;
obj.funl(); //①
obj.fun2(); //②
obj.fun3(); //③
obj.fun4(); //④
return 0;
}
其中有语法错误的语句是
A)①②③ 15、④ B)①②③ C)②③④ D)①④
25有如下程序:
#include 16、
void f(Base &b){ b.funl(); b.fun2();}
int main()
{
Derived obj;
f(obj);
return 0;
}
执行这个程序的输出结果是
A)Base B)Base C)Derived D)Derived
Base Derived Base Derived
26 有如下类声明:
class SAMPLE
{
int n;
public:
SAMPLE (int i = 0): n(i){}
void setValue(int n0);
};
下列关于setValu 17、e成员函数的实现中, 正确的是
A)SAMPLE::setValue(int n0){n = n0;}
B)void SAMPLE::setValue(int n0){n = n0;}
C)void setValue(int n0){n = n0;}
D)setValue(int n0){n = n0;}
27.下列函数模板的定义中, 合法的是( ) 。
A.template 18、ate T 19、b1(b)
{cout <<"调用派生类A的构造函数: "< 20、函数: 1
调用派生类A的构造函数: 3 调用基类BASE的构造函数: 3
29.下列程序的运行结果为( ) 。
# include 21、
void main()
{ T A(3),B(5);
T::display(A);
T::display(B);
}
A) a=3 b=8 B) a=3 b=5
a=5 b=10 a=5 b=5
C.a=3 b=13 D) a=3 b=8
a=5 b=13 a=5 b=13
30.下面程序中对一维坐标点类Point进行运算符重载
#include 22、
public:
point ( int vaI) {x=val;}
point& operator++( ) {x++;retum*this;}
point operator++( int) {point old=*this,++( *this) ;retum old;}
int GetX( ) const {retum x;}
private:
int x;
};
int main( )
{
point a( 10) ;
cout<<( ++a) .GetX( ) ;
cout< 23、
retum( ) ;
}
编译和运行情况是
A) 运行时输出1011 B) 运行时输出1111
C) 运行时输出1112 D) 编译有错
二、 填空题。
1 程序中有如下语句
for(int i = 0; i<5; i++) cout<<*(p + i)<<",";
能够依次输出int型一维数组DATA的前5个元素。由此可知, 变量p的定义及初始化语句是______________。
2 若下面程序运行时输出结果为
1, A, 10.1
2, B, 3.5
请将程序补充完整。,
#include
using
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818