网上收集的c/c++的笔试题,将部分整理成节,上传后大家方便。不是很全,但是可以作为笔试的参考吧。
请回答下列问题:
(1)执行该程序后,输出结果是什么? (2)该程序中哪些语句采用了动态联编? (3)去掉virtual void Print( )中的关键字virtual后,该程序的输出结果是什么? 九、分析下列程序,并回答后面的问题。(分) 程序内容如下:
#include <iostream.h> class A {
public: A(int i){ a=i;
cout<<”a=”<<a<<endl; } ~A(){ cout<<”A’s destructor “<<a<<endl; } int a; };
class B: virtual public A {
public: B(int i, int j): A(i) { cout<<”B:”<<j<<endl; } };
class C: virtual public A {
public:
C(int i, int j): A(i)
{ cout<<”C:”<<i+j<<endl; } };
class D: public B, public C {
public:
D(int k1, int k2, int k3, int k4): B(k1,k2), C(k4,k3), A(k1) {
cout<<”D:”<<k4<<endl; } };
void main() { D d(1,2,3,4); A a(5); a=A(6);
cout<<”a.a=”<<a.a<<endl; cout<<”d.a=”<<d.a<<endl; }
请回答下列问题:
(1)执行该程序后,输出结果是什么? (2)去掉class B: virtual public A 和class C: virtual public A中的关键字virtual后,该程序的哪个语句的执行会出现二义性?
(3)将class D: public B, public C修改成class D: public C, public B后,输出结果是否有变化?
(4)将B(k1,k2), C(k4,k3), A(k1) 修改成C(k4,k3), B(k1,k2), A(k1)后,输出结果是否有变化? 整理之c++笔试2
一、 填空题(25小题,共50分) (以下每小题1分,共10分) 1. 在C++中,函数的参数有两种传递方式,它们是值传递和 地址或指针或引用传递 。 2. 当一个成员函数被调用时,该成员函数的 this指针 指向调用它的对象。
3. 在基类和派生类中,派生类可以定义其基类中不具备的数据和操作。对两个有相同名字的数据成员进行访问时,如果没有 作用域分隔符限定时 ,对此数据成员的访问将出现歧义。 4. 拷贝构造函数使用 引用 作为参数初始化创建中的对象。
5. 在公有继承的情况下,基类数据成员在派生类中的访问权限 保持不变 。
6. 描述命题”A小于B或小于C”的表达式为 A<B||A<C 。 7. 用new申请某一个类的动态对象数组时,在该类中必须能够匹配到 没有形参的或缺省参数 构造函数,否则应用程序会产生一个编译错误。
8. 静态数据成员在类外进行初始化,且静态数据成员的一个拷贝被类的所有对象 共享 。
9. 为了避免可能出现的歧义,C++对if else语句配对规则规定为:else总是与 与最近的if 配对。