一、单项选择题
1. 类的构造函数被自动调用执行的情况是在定义该类的()
A. 成员函数时
B. 数据成员时
C. 对象时
D. 友元函数时
2. 假定一个类的构造函数为“A(int i=4, int j=0) {a=i;b=j;}”, 则执行“A x (1);”语
句后,x.a和x.b的值分别为()
A. 1和0
B. 1和4
C. 4和0
D. 4和1
3. 所谓多态性是指 ()
A. 不同的对象调用不同名称的函数
B. 不同的对象调用相同名称的函数
C. 一个对象调用不同名称的函数
D. 一个对象调用不同名称的对象
4. 构造函数不具备的特征是()
A. 构造函数的函数名与类名相同
B. 构造函数可以重载
C. 构造函数可以设置默认参数
D. 构造函数必须指定类型说明
5. 在公有继承的情况下,基类的公有或保护成员在派生类中的访问权限()
A. 受限制
B. 保持不变
C. 受保护
D. 不受保护
6. C++对C语言做了很多改进,即从面向过程变成为面向对象的主要原因是()
A. 增加了一些新的运算符
B. 允许函数重载,并允许设置缺省参数
C. 规定函数说明符必须用原型
D. 引进了类和对象的概念
7. 在类中说明的成员可以使用关键字的是()
A. public
B. extern
C. cpu
D. register
8. C++语言中所有在函数中定义的变量,连同形式参数,都属于()
A. 全局变量
B. 局部变量
C. 静态变量
D. 函数
9. 在私有继承的情况下,基类成员在派生类中的访问权限()
A. 受限制
B. 保持不变
C. 为共有
D. 为保护
10. 使用引用作为函数参数,下列说法正确的是()
A. 实参是形参的备份
B. 实参与形参无联系
C. 形参是实参的备份
D. 实参与形参是同一对象
11. C++的继承性允许派生类继承基类的()
A. 部分特性,并允许增加新的特性或重定义基类的特性
B. 部分特性,但不允许增加新的特性或重定义基类的特性
C. 所有特性,并允许增加新的特性或重定义基类的特性
D. 所有特性,但不允许增加新的特性或重定义基类的特性
12. 以下基类中的成员函数表示纯虚函数的是()
A. virtual void tt()=0
B. void tt(int)=0
C. virtual void tt(int)
D. virtual void tt(int){}
二、填空题(请在每小题的空格中填上正确答案。错填、不填均无分。)
1. 抽象类中至少要有一个_纯虚__函数。
2. 编译时的多态性通过_重载__函数实现。
3. 基类的公有成员在派生类中的访问权限由_继承方式__决定。
4. 假设类X的对象x是类Y的成员对象,则“Y Obj”语句执行时,先调用类___的构造函数。
5. 下列程序段的输出结果是___。
6. C++中有两种继承:单继承和_多重继承__。
7. C++语言中如果调用函数时,需要改变实参或者返回多个值,应该采取引用___方式。
8. 将指向对象的引用作为函数的形参,形参是对象的引用,实参是 _对象名__。
三、改错题
1. class ABC
{int a;
public:
ABC(int aa)a(aa){} ABC(int aa):a(aa){};
};
2.
class Aton
{int X,Y;
protected:
int zx,zy;
public:
void init(int i,int j){zx=i;zy=j;}
Aton(int i,int j,int n=0,int m=0)
{X=i,Y=j,zx=m,zy=n;
}
添加int getX(){return X};
};
void main()
{Aton A(25,20,3,5);
A.init(5,9);
cout<&X()<<endl;
3.
class Bas
{public:
~Bas(){cout<<"Bas construct"<<endl;}
virtual void f()=0;
};
class Dev:public Bas
{public:
~Dev(){cout<<"Bas construct"<<endl;}
virtual void f(){cout<<"Dev::f"<<endl;}
};
void main()
{Bas *a=new Bas(); Bas *a;
Dev p;
a=&p;
a->f();
}
4. 以下程序实现交换a,b变量的值,请用下横线标出错误所在行并给出修改意见。
void swap(int &a,int &b)
{a=a+b;
b=a-b;
a=a-b;
}
void main()
{int a=19,b=15;
cout<<"a="<<a<<",b="<<b<<endl;
swap(&a,&b); swap(a,b);
cout<<"a="<<a<<",b="<<b<<endl;
}
5.
void main()
{int i(3),j(8);
int * const p=&i; int *p=&i;
cout<<*p<<endl;
p=&j;weight的所有形式
cout<<*p<<endl;
}
四、完成程序题
1. 在下面程序的底画线处填上适当的字句,使该程序执行结果为40。
class Test
{ public:
static int x______;
Test (int i=0)
{x=i+x;}
int Getnum()
{return Test::x+7;}
};
int Test::x=33_______;
void main()
{Test test;
cout<<test.Getnum()<<endl;;
}
五、程序分析题
1. 运行程序,写出程序执行的结果。
void main()
{int a,b,c;
char ch;
cin>>a>>ch>>b>>c;//从键盘上输入1.5×c×10×20,×表示一个空格
cout<<a<<endl<<ch<<endl<<b<<endl<<c<<endl;
}
2. 给出下面程序输出结果。
class A
{public:
A()
{cout<<"As cons."<<endl;}
virtual ~A()
{cout<<"As des."<<endl;}
virtual void f()
{cout<<"As f()."<<endl;}
void g()
{f();}
};
class B:public A
{public:
B()
{f();cout<<"Bs cons."<<endl;}
~B()
{cout<<"Bs des."<<endl;}
};
class C:public B
{public:
C()
{cout<<"Cs cons."<<endl;}
~C()
{cout<<"Cs des."<<endl;}
void f()
{cout<<"Cs f()."<<endl;}
};
void main()
{A *a=new C;
a->g();
delete a;
}
As cons.
As f().
Bs cons.
Cs cons.
Cs f().
Cs des.
Bs des.
As des.
六、程序设计题
1. 已知交通工具类定义如下。
要求:(1)实现这个类;(2)定义并实现一个小车类car,是它的公有派生类,小车本身的私有
属性有载人数,小车的函数有init(设置车轮数,重量和载人数),getpassenger(获取载人数
),print(打印车轮数,重量和载人数)。
class vehicle
{protected:
int wheels;//车轮数
float weight;//重量
public:
void init(int wheels,float weight);
int get_wheels();
float get_weight();
void print();
};
void vehicle::init(int wheels,float weight)
{this->wheels=wheels;
this->weight=weight;
cout<<wheels<<endl;
}
int vehicle::get_wheels()
{return wheels;
}
float vehicle::get_weight()
{return weight;}
void vehicle::print()
{cout<<"车轮数:"<<wheels<<","<<"重量:"<<weight<<endl;}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论