在信息爆炸的时代,数据安全与隐私保护显得尤为重要。联想模考C++笔试,旨在考察应聘者对C++编程语言的掌握程度,以及在实际问题中应用数据结构和算法的能力。此次笔试题目涵盖了基础语法、面向对象编程、STL库使用以及数据结构和算法等知识点。下面,让我们一起进入这场充满挑战的笔试之旅吧!

6.派生类的对象可以访问以下那种情况继承的基类成员
A:私有继承的私有成员
B:公有继承的私有成员
C:私有继承的保护成员
D:公有继承的公有成员
参考答案:D
7.this指针存在的目的是( )
A:保证基类私有成员在子类中可以被访问
B:保证基类保护成员在子类中可以被访问
C:保证每个对象拥有自己的数据成员,共享处理这些数据成员的代码
D:保证基类公有成员在子类中可以被访问
参考答案:C
8.下列关于析构函数描述正确的是
A:可以重载
B:函数体中必须有delete语句
C:返回类型必须是void类型
D:不能指定返回类型
参考答案:D
9.对基类和派生类的关系描述中,错误的是
A:派生类是基类的具体化
B:基类继承了派生类的属性
C:派生类是基类定义的延续
D:派生类是基类的特殊化
参考答案:B
10.假设Class Y:public X,即类Y是类X的派生类,则说明一个Y类的对象时和删除Y类对象时,调用构造函数和析构函数的次序分别为
A:X,Y;Y,X
B:X,Y;X,Y
C:Y,X;X,Y
D:Y,X;Y,X
参考答案:A
11.假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为
A:x.a
B:x.a()
C:x->a
D:(*x).a()
参考答案:B
12.要禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定义为
A:const char *p=“ABCD”;
B:char *const p=“ABCD”;
C:char const *p=“ABCD”;
D:const char * const p=“ABCD”;
参考答案:D
13.关于类模板的说法正确的是:
A:类模板的主要作用是生成抽象类
B:类模板实例化时,编译器将根据给出的模板实参生成一个类
C:在类模板中的数据成员具有同样类型
D:类模板中的成员函数没有返回值
参考答案:B
14.下列函数模板的定义中,合法的是
A:template<typename T>T abs(T x){return x<0?-x:x;}
B:template class<T>T abs(T x){return x<0 ?-x:x;}
C:template T<class T> abs(T x){return x<0 ?-x:x;}
D:template T abs(T x){return x<0 ?-x:x;}
参考答案:A
15.有如下程序:
#include <iostream>
using namespace std;
class Sample
{
friend long fun(Sample s);
public:
Sample(long a ) {x=a;}
private:
long x;
};
long fun(Sample s)
{
if(s.x<2)
return 1;
return s.x*fun(Sample(s.x -1));
}
int main()
{
int sum=0;
for(int i=0;i<6;i++){sum+=fun(Sample(i));}
cout<<sum;
return 0;
}
运行时输出的结果是
A:120
B:16
C:154
D:34
参考答案:C
16.观查下面一段代码。
class ClassE{
public:
virtual 〜ClassE(){};
virtual void FunctionE(){};
};
class ClassF{
public:
virtual void FunctionF(){};
};
class ClassG : public ClassE, public ClassF{}; ClassG aObject; //语句1
ClassE* pE=&aObject;
ClassF* pF=&aObject;
ClassG* pG=&aObject;
关于pE,pF,pG的取值,下面的描述中正确的是()。
A:pE,pF,pG的取值相同
B:pG=pE+pF
C:pE和pF不相同
D:pG不等于pE也不等于pF
参考答案:C
17.观查下面一段代码。
class ClassE{
public:
virtual 〜ClassE(){};
virtual void FunctionE(){};
};
class ClassF{
public:
virtual void FunctionF(){};
};
class ClassG : public ClassE, public ClassF{}; ClassG aObject; //语句1
ClassE* pE=&aObject;
ClassF* pF=&aObject;
ClassG* pG=&aObject;
ClassE* pE2;
下面正确的代码是
A:pE2=static_cast<ClassE*>(pF);
B:void*pVoid=static_cast<void*>(pF); pE2=static_cast<ClassE*>(pVoid);
C:pE2=pF;
D:pE2=static_cast<ClassE*>(static_cast<ClassG*>(pF));
参考答案:D