一、填空题
1、 静态 数据成员是类的所有对象共享的成员。它所占的空间不会随着对象的产生而分配,也不会随着对象的消失而回收。
2、使用new运算创建A类型的某个对象,语句为 A* ptr=new A 。
3、通过指向类中数据成员的指针变量,可以访问它所指向的类中的 数据成员 (该成员必须是public访问权限),但该指针不是类的成员,只是程序中的一个指针变量而已。
函数重载指一个函数可以和同一作用域的其他函数同名,但这些同名函数在 参数类型 、 参数个数 可以完全不同。
5、在编译阶段不能决定执行哪个同名的被调函数,只在程序运行过程中根据需要处理
的 对象类型 来决定执行哪个类的函数的能力,叫做动态联编。
6、运算符重载时,单目运算符最好重载为类的 成员函数 ,而双目运算符则最好重载为类的 友元函数 。
7、模板类是实实在在的类的定义,是 类定义 的实例。
设有代码cout<”;}
};
void main()
{
point p(1,2);
}
A.1,2 B.1,2 C.1,2good D.good
Good
2、当定义类的一个对象时,所定义的类应该( B )
A. 只能包含一个缺省的构造函数 B. 应有一个包含缺省参数的构造函数
C. 至少应有两个构造函数 D. 构造函数存在就可以了
3、下述对基类和导出类描述中,错误的是( A )
A. 导出类是基类的父类 B. 导出类可以有多个基类
C. 导出类是基类定义的延续 C. 导出类是基类的子类
5、下述选项中,析构函数不起作用的一项是( C )
A. 自动对象离开作用域时 B. 动态分配的对象被删除时
C. 分配一个动态对象时 D. 对于全局对象,当程序终止时
6、下列关于运算符重载的描述中,正确的是( B )
A. 运算符重载可以改变操作数的个数 B. 运算符重载不能改变语法结构
C. 运算符重载可以改变结合性 D. 运算符重载可以改变运算符的优先级
7、关于虚函数的描述中,正确的是( C )
导出类的虚函数与基类的虚函数具有不同的参数个数与类型
虚函数是static类型的成员函数
在基类中说明了虚函数后,导出类与基类中对应的函数可不再说明为虚函数
虚函数是一个非成员函数
9、下列程序在main()中调用max函数,
void max(int,int=5){//……}
void main()
{
请在这里选择调用选项有错的一个。( D )
}
cout<
using namespace std;
class X{public:static int a;};
int X::a=5;
void main()
{
X x1,x2;
x1.a=10;
cout<
using namespace std;
int max(int x ,int y=10);
double max(double x =2.1, double y=10.1);
void main()
{ cout<y?x:y;
}
double max(double x , double y)
{
return x>y?x:y;
}
运行结果:
13
13.1416
2、阅读下面程序,写出运行结果。
#include
using namespace std;
template
T max( T a,T b )
{
return a>b?a:b;
}
void main()
{int a=1,b=5;
cout<
using namespace std;
class Sample
{private:
int x;
public:
Sample(int a){x=a;}
friend double square(Sample &s);
};
double square(Sample &s)
{return s.x*s.x;}
void main()
{
Sample s1(20);
Sample s2(30);
cout<
using namespace std;
class point{
int x,y;
public:
point(int i,int j){x=i;y=j;}
void show(){cout<
#include
using namespace std;
string s=”We study hard!”;
char& replace(int i ){return s[i];}
void main()
{
replace(5)=’x’;
cout<
using namespace std;
class base
{
public:
【1】virtual void fn()
{
cout<<"