华为C++笔试题

更新时间:2023-12-09 07:45:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

文档名称 文档密级:

脚本执行失败问题

1. 虚函数是可以内联的,这样就可以减少函数调用的开销,提高效率(错误) 2. 一个类里可以同时存在参数和函数名都相同的虚函数与静态函数(错误) 3. 父类的析构函数是非虚的,但是子类的析构函数是虚的,delete子类指针(指向该子类对象),会调用父类的析构函数(正确)//任何情况下删除子类都会调用到父类的析构函数 4.对于下面的类CA,sizeof(CA) = _B_: A. 4 B. 8 C. 12 D. 16 class CA {

public: CA();

virtual ~CA(); //因为有虚函数,所以会有4个字节的虚表指针 private:

int m_iTime; //成员变量4个字节 public:

int GetTime();

int SetTime(int iTime); };

5.下面这段程序,打印结果是_A_: A. 1 B. 2 C. 3 D. 以上都不对 int g_iCount = 0; class CParent {

public:

CParent() {}

~CParent() {g_iCount += 1;} };

class CSon : public CParent {

public:

CSon() {}

~CSon() {g_iCount += 2;} };

main() {

CParent* p = new CSon(); delete p;

std::cout << g_iCount << std::endl; }

6.请问下面这段程序的输出结果是_A_: A. 2,1, B. 2,2, C. 1,1, D. 1,2, class CParent {

public:

CParent() {}

virtual ~CParent() {} public:

virtual void Print() { std::cout << \

2013-4-20

华为机密,未经许可不得扩散

第1页, 共36页

文档名称 文档密级:

};

class CSon : public CParent {

public:

CSon() {};

virtual ~CSon() {}; public:

void Print()

{ std::cout << \};

void Test1(CParent& oParent) {oParent.Print();}

void Test2(CParent oParent) {oParent.Print();} main() {

CSon * p = new CSon();

Test1(*p); //这里只是一个引用

Test2(*p); //这里会在栈空间重新构造Cparent类对象 delete p; }

7.请问下面这段程序的输出结果是_D_: A. 2,1, B. 2,2, C. 1,1, D. 1,2, class CParent {

public:

CParent() {}

virtual ~CParent() {} public:

void Print(){ std::cout << \};

class CSon : public CParent {

public:

CSon() {}

virtual ~CSon() {} public:

void Print(){ std::cout << \};

main() {

CSon oSon;

CParent * pParent = &oSon; CSon * pSon = &oSon; pParent->Print(); pSon->Print(); }

8.请问下面这段程序的输出结果是_C_:

2013-4-20

华为机密,未经许可不得扩散

第2页, 共36页

文档名称 文档密级:

A. 2,1, B. 2,2, C. 1,2, D. 1,1, class CParent {

public:

CParent() {Print();} virtual ~CParent() {} public:

virtual void Print(){ std::cout << \};

class CSon : public CParent {

public:

CSon() {Print();} virtual ~CSon() {} public:

void Print(){ std::cout << \};

main() {

CParent * pParent = new CSon(); delete pParent; }

9.请问下面这段程序的输出结果是_D_:

A. 2,2, B. 2, C. 输出结果不确定 D. 以上都不对 class CParent {

public:

CParent() {Print();} virtual ~CParent() {} public:

virtual void Print() = 0; };

class CSon : public CParent {

public:

CSon() {Print();} virtual ~CSon() {} public:

void Print()

{ std::cout << \};

main() {

CParent * pParent = new CSon(); delete pParent; }

10.请仔细阅读以下程序: class Base {

2013-4-20

华为机密,未经许可不得扩散

第3页, 共36页

文档名称 文档密级:

public: virtual bool operator == (int iValue) { std::cout << \ return true; } virtual ~Base(){} };

class Derive: public Base {

public: virtual bool operator == (int iValue) { std::cout << \ return true; }

virtual ~Derive(){} };

int main() { Derive derive; Base* pBase = &derive; Derive* pDerive = &derive; *pBase == 0; *pDerive == 0; return 0; }

程序的输出结果是_B_: A、I am Base class ! I am base class !

B、I am Derive class ! I am Derive class ! C、I am base class ! I am Derive class ! D、I am Derive class ! I am Base class ! 11.请仔细阅读以下程序: class Base {

public: virtual void display(std::string strShow = \ { std::cout << strShow << std::endl; } virtual ~Base(){} };

class Derive: public Base {

public: virtual void display(std::string strShow = \ { std::cout << strShow << std::endl; }

2013-4-20

华为机密,未经许可不得扩散

第4页, 共36页

文档名称 文档密级:

virtual ~Derive(){} };

int main() { Base* pBase = new Derive(); Derive* pDerive = new Derive(); pBase->display(); pDerive->display(); delete pBase; delete pDerive; return 0; }

程序的输出结果是_C_: A、I am Base class ! I am base class !

B、I am Derive class ! I am Derive class ! C、I am base class ! I am Derive class ! D、I am Derive class ! I am Base class !

12.请仔细阅读以下程序: class Base {

public: virtual void display() const { std::cout << \ virtual ~Base(){} };

class Derive: public Base {

public: virtual void display() { std::cout << \ virtual ~Derive(){} };

int main() { Base* pBase = new Derive(); Derive* pDerive = new Derive(); pBase->display(); pDerive->display(); delete pBase; delete pDerive; return 0; }

程序的输出结果是_C_: A、I am Base class ! I am base class !

2013-4-20

华为机密,未经许可不得扩散

第5页, 共36页

文档名称 文档密级:

76.对于名字空间(namespace)以下哪个说法是错误的:_D_ A. 使用声明(the using-declaration)可用于类的声明中。 B. 使用指示(the using-directive)具有传递性。

C. 如果某函数访问其自身所在名字空间中成员元素时,可以直接访问。 D. 通过使用指示(the using-directive)引入存在有相同成员元素的多个名字空间,在实际存取这些存在冲突的成员元素之前,也会导致当前作用域中元素冲突的错误发生。 77.对于名字空间(namespace)以下哪个说法是错误的:_A_

A. 用关键字namespace定义的名字空间必须有一个显示的名字且是独一无二的。

B. 通过使用声明(the using-declaration)引入的元素名字会遮蔽名字相同的非局部声明。 C. 表达式::a,一般表示引用全局作用域中声明的元素a。 D. 名字空间是允许嵌套的。

78.判断题 如下类静态成员变量的调用方法都正确 错误

类名::变量名、类名.变量名、类对象.变量名、类对象::变量名 79.请阅读如下代码 class cAAA {

public:

cAAA();

virtual ~cAAA(); private:

static int m_iValue; };

类cAAA对象的静态成员变量m_iValue存放在(D)。 A、 类cAAA的对象中; B、 类cAAA中;

C、 数据段中且每一个类cAAA对象拥有一个m_iValue实体;

D、 数据段中且类cAAA的所有对象共同拥有一个m_iValue实体; 80.请阅读如下代码,下列中对类 class cAAA {

public:

cAAA();

virtual ~cAAA(); private:

static int m_iValue; };

的静态成员变量m_dwValue初始化最正确的是:(B)。

A、 在文件cAAA.h中类的声明之后,int cAAA::m_iValue = 100; B、 在文件cAAA.cpp中,#include “cAAA.h”之后, int cAAA::m_iValue = 100;

C、 在文件cAAA.cpp中,类的构造函数cAAA::cAAA() {

int cAAA::m_iValue = 100; }

D、 在文件cAAA.cpp中,类的构造函数cAAA::cAAA() {

m_iValue = 100; }

81.假定程序运行环境为:操作系统Windows 2000,VC6.0编译环境,X86(80586)CPU处理器

2013-4-20

华为机密,未经许可不得扩散

第21页, 共36页

文档名称 文档密级:

(32位小字节序处理器,4字节对齐) class cAAA {

public:

cAAA();

virtual ~cAAA(); private:

static int m_iValue1; int m_iValue2; }

类cAAA的一个对象cAAAobj,那么sizeof(cAAAobj) = (C)。 A、1 B、4 C、8 D、16 82.文件stdafx.h如下: #include using namespace std; 文件cAAA.h如下: class cAAA {

public: cAAA();

cAAA(int iValue); virtual ~cAAA(); private:

int m_iValue; };

文件cAAA.cpp如下: #include \#include \cAAA::cAAA()

{cout << \cAAA::cAAA(int iValue) {

m_iValue = iValue;

cout << \}

cAAA::~cAAA() {} 文件cBBB.h如下: #include \class cBBB {

public:

cBBB();

virtual ~cBBB(); private:

static cAAA m_cAAAobj; static cAAA m_cAAAobj1; };

文件cBBB.cpp如下: #include \

2013-4-20

华为机密,未经许可不得扩散

第22页, 共36页

文档名称 文档密级:

#include \

cAAA cBBB::m_cAAAobj(100); cAAA cBBB::m_cAAAobj1(1000); cBBB::cBBB()

{cout << \cBBB::~cBBB() {}

测试程序如下:

#include \#include \#include \

int main(int argc, char* argv[]) {

cBBB cobj; cBBB cobj1; return 0; }

则该测试程序的输出结果为:(D) A、

cAAA(int) constructor called! 100 cAAA(int) constructor called! 1000 cBBB::cBBB() called!

cAAA(int) constructor called! 100 cAAA(int) constructor called! 1000 cBBB::cBBB() called! B、

cBBB::cBBB() called!

cAAA(int) constructor called! 100 cAAA(int) constructor called! 1000 cBBB::cBBB() called!

cAAA(int) constructor called! 100 cAAA(int) constructor called! 1000 C、

cBBB::cBBB() called!

cAAA(int) constructor called! 100 cAAA(int) constructor called! 1000 cBBB::cBBB() called! D、

cAAA(int) constructor called! 100 cAAA(int) constructor called! 1000 cBBB::cBBB() called! cBBB::cBBB() called!

83.判断题 在使用一个类的静态成员函数前,一定要先生成该类的一个对象。错误 84.判断题 在静态成员函数内部可以直接访问类的所有成员变量和成员函数。错误 85.如下代码,正确的是:C class CExample {

public:

static void Func( void* pobj );

2013-4-20

华为机密,未经许可不得扩散

第23页, 共36页

文档名称 文档密级:

private:

char m_cTest; }; A.

void CExample::Func( void* pobj )

{m_cTest = ( char )0;} //没有实例,不能访问成员变量

B. 在Func内部不能访问类的私有成员m_cTest; //有实例的前提下可以访问 C. void CExample::Func( void* pobj ) {

CExample *pThis;

pThis = dynamic_cast< CExample* >( pobj ); ASSERT( NULL != pThis ); pThis->m_cTest = ( char )0; }

D. void CExample::Func( void* pobj ) {CExample::m_cTest = ( char )0;}

86.如下,关于类的静态成员函数描述正确的是:C

A. 类的静态成员函数是属于某个类对象的。 //静态函数相当于可以访问成员的全局函数 B. 可以从类的外部直接访问类的静态成员函数,前面不用添加类作用域。 //不行 C. 类的静态成员函数与类的一般成员函数相比,少了一个隐含的this指针参数。 D. 类的静态成员函数完全等价于全局函数。 //全局函数不能访问私有和保护成员 87.如下代码,其中对类CExample的成员函数Func调用不正确的是:( D ) class CExample {

public:

static void Func( void ); };

main() {

...

CExample objExamle; CExample *pobjExample; ... }

A.objExamle.Func() B.pobjExample ->Func() C.CExample::Func() D.Func( )

88.当前工程目录下存在MyHeader.h文件,请找出下面可能导致编译错误的选项_B_: A. #include “MyHeader.h” B. #include C. #include “stdio.h” D. #include

89.一个C++头文件内容如下:(前面的数字为行号) 1 typedef unsigned char _UC; 2 int ival; //定义了一个变量

3 extern void dummy() {}; //定义了一个函数 4 extern int jval;

请问,那几行容易导致错误?_C_:

A. 1和2 B 3和4 C 2和3 D 1和4 E 2和4 F 1和3

2013-4-20

华为机密,未经许可不得扩散

第24页, 共36页

文档名称 文档密级:

90.下面那个#include语句可能会发生编译错误?_E_: A. #include B. #include “stdio.h” C. #include D. #include “cstdio” E. #include

91.在编译过程中处理#include语句的阶段是_A_: A. 预编译 B. 词法分析 C. 语法分析 D. 语义分析 E. 二进制代码生成

92.下面哪个选项通常是不应该放到头文件中的?_D_: A. 函数声明 B. 宏定义

C. inline函数定义 D. 常规函数定义

93.判断下面说法是否正确:正确

#include机制用于将源程序片段收集在一起,形成一个完整的编译单元作为编译器的输入。 94.判断题 请判断下面的说法是否正确:正确

在C++中下面情况1的代码编译链接不成功,情况2的代码能够编译链接成功。其中.C文件文件用C语言编译器编译,.CPP文件用C++语言编译器编译。 情况1: 情况2: //file1.c //file1.c int x = 1; int x = 1; //file2.cpp //file2.cpp extern int x; extern \{

void InitX( void ) extern int x; { }

x = 5; void InitX( void ) } {

x = 5; }

95.下面语句应该放在头文件中的是:_C_ A、

extern int Total = 10; B、

int total; C、

extern int Total;

考点说明:全局变量的声明已经放在.H文件中,定义不应该放在.H文件中。

2、下面语句是声明的是:(D) A、

extern int Errno = 0; B、

int Errno; C、

extern void Reset() { /*?*/ } D、

extern int Errno;

2013-4-20

华为机密,未经许可不得扩散

第25页, 共36页

本文来源:https://www.bwwdw.com/article/1vy5.html

Top