华为C++MFC面试题附上个人答案不当之处请指正Word文档下载推荐.docx

上传人:b****6 文档编号:18865007 上传时间:2023-01-01 格式:DOCX 页数:10 大小:18.06KB
下载 相关 举报
华为C++MFC面试题附上个人答案不当之处请指正Word文档下载推荐.docx_第1页
第1页 / 共10页
华为C++MFC面试题附上个人答案不当之处请指正Word文档下载推荐.docx_第2页
第2页 / 共10页
华为C++MFC面试题附上个人答案不当之处请指正Word文档下载推荐.docx_第3页
第3页 / 共10页
华为C++MFC面试题附上个人答案不当之处请指正Word文档下载推荐.docx_第4页
第4页 / 共10页
华为C++MFC面试题附上个人答案不当之处请指正Word文档下载推荐.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

华为C++MFC面试题附上个人答案不当之处请指正Word文档下载推荐.docx

《华为C++MFC面试题附上个人答案不当之处请指正Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《华为C++MFC面试题附上个人答案不当之处请指正Word文档下载推荐.docx(10页珍藏版)》请在冰豆网上搜索。

华为C++MFC面试题附上个人答案不当之处请指正Word文档下载推荐.docx

intnTemp=MAX_NUM*10;

///宏的功能只是简单的字符替换,MAX_NUM*10表示100+200*10,所以用宏要小心

则Temp=__2100__。

5.请给出如下程序的结果(3分)

charszTemp[1000]="

"

;

intnLen1=sizeof(szTemp);

intnLen2=strlen(szTemp);

///strlen的计算结果不包含结束符\\\0\

strcpy(szTemp,"

abc"

);

intnLen3=sizeof(szTemp);

intnLen4=strlen(szTemp);

intnTemp[100];

int*pTemp=nTemp;

intnLen5=sizeof(pTemp);

///在32位系统中,指针只占4位字节,不管它指向地址的内容有多大!

charszResult[200]="

sprintf(szResult,"

%d,%d,%d,%d,d."

nLen1,nLen2,nLen3,nLen4,nLen5);

则szResult=_1000,0,1000,3,04___。

6.MFC中,大部分类是从哪个类继承而来(CCmdTarget、CObject、CWinApp、CWnd)?

(2分)__CObject__

7.内存是进程范围or线程范围;

__进程__///进程有独立的内存,是线程的管理者,线程是进程的执行者

CpU调度时,针对进程or线程;

__线程__///线程才是执行者

函数调用堆栈,针对进程or线程。

_进程___(3分)///进程才有独立内存,堆栈属于内存的一部分

8.调用函数bbb后,输出是什么(4分)

voidc(intx)///参数为数值传递,不是引用传递

{

charszTemp[10]="

x=2;

sprintf(szTemp,"

%d,"

x);

afxDump<

szTemp;

///afxDump表示输出信息到MFC调试(Debug)窗口

if(x=3)///注意这里不是"

=="

而是"

="

,所以if条件是成立的

intx=4;

}

voidbbb()

intx=7;

c(x);

二.改错题(总共15分,每题5分)。

1.下面代码有何错误

voidfunc1()

int*pa=NULL;

func2(pa);

///函数返回后pa仍然是空指针

pa;

///pa仍然是空指针,pb申请的空间并没有被掉

voidfunc2(int*pb)

pb=newint(5);

///pb重新申请了堆空间

2.下面代码有何错误

voidfunc2(int*value)

*value=2;

///value为空指针,不能被取值,所以*value是错误的

int*p=0;

func2(p);

3.

intfunc1(int&

b)///参数b的类型是整型

return0;

voidfunc2()

intbbb=3;

func1(&

bbb);

///函数参数的引用调用不需要用符号"

&

func1(bbb);

func2中有何错误,func1的参数b的类型是什么。

三.简答题(64分)

pS:

以下答案是随笔所写,请读者做进一步的深入了解。

1.请简述C、C++、VC、MFC在概念上的区别(4分)

答:

C是面向过程编程的语言;

C++是面向对象编程的语言;

VC是微软提供的方便于开发C++程序的一套开发工具。

MFC(MicrosoftFunctionClass),是微软提供的一套函数类库,里面封装了许多WindowsApI函数,方便开发者调用。

2.请写一个函数重载的简单例子(4分)

intadd(inta,intb)

return(a+b);

函数重载:

///函数重载是指函数名相同,但参数类型或返回值可能不同的函数。

floatadd(floata,floatb)

3.用什么函数开启新进程、线程。

(4分)

Createproess()创建进程;

CreateThread()创建线程

MFC中还提供了_beginthread()与_beginthreadex()函数创建线程

4.SendMessage和postMessage有什么区别(4分)

SendMessage:

发送消息后,等待消息处理完毕后才继续执行自身的程序。

postMessage:

发送消息后不等待消息处理即继续执行自身的程序。

5.WaitForSingleObject有何作用;

m_pThrd的类型是CWinThread*时,WaitForSingleObject(m_pThrd->

m_hThread,INFINITE);

有何作用。

WaitForSingleObject是表示等待线程的一个函数。

参数为INFINITE表示一直等待线程CWinThread执行结束后,再继续处理自身程序。

6.__stdcall、__cdecl、__pascal在什么方面有所不同。

这些都是一些函数参数的调用约定,告诉编译器函数参数压栈的顺序,以及压入堆栈的内容由谁来清除,是调用者还是函数本身清除堆栈的内容。

简单列表如下:

DirectiveparameterorderClean-uppassesparametersinregisters?

pascalLeft-to-rightRoutineNocdeclRight-to-leftCallerNostdcallRight-to-leftRoutineNo

7.请把下述代码加上异常处理。

(6分)

intMyWriteFile(CStringstrFileName,CStringstrText)

intnRet=0;

CFilemyFile;

myFile.Open(strFileName,CFile:

:

modeWrite|CFile:

shareExclusive|CFile:

modeCreate,NULL);

intnLen=strText.GetLength();

myFile.Write((char*)(LpCSTR)strText,nLen);

myFile.Close();

returnnRet;

__try

nRet=myFile.Open(strFileName,\\

CFile:

if(!

nRet)

///输出异常信息

__leave;

///结束try块,跳到__finaly代码块

nRet=myFile.Write((char*)(LpCSTR)strText,nLen);

__finaly

returnnRet;

8.请解释“func”为何种类型,这种类型的作用什么,变量ttt的值是多少?

typedefint(*func)(int,int*);

intxxx(inta,int*p)

returna+*p;

intdowork(funcaaa,intbbb,int*c)

returnaaa(bbb,c);

intsss=4;

intttt=dowork(&

xxx,3,&

sss);

func表示一个函数指针,它指向参数为int,int*,返回值为int的函数。

ttt的值为7

9.请问下述代码中:

intoperator+(…)起什么作用?

this是什么?

c的值最终为多少?

(6分)

classFruit

public:

Fruit()

weight=2;

Fruit(intw)

weight=w;

intoperator+(Fruitf)

returnthis->

weight*f.weight;

private:

intweight;

};

Fruitaaa;

Fruitbbb(4);

intc=aaa+bbb;

intoperator+(…)表示重载类的“+”号运算符,this表示对象本身的指针,本例中它指向类的对象aaa;

c最终的结果为8(8=2*4)。

10.请解释下面代码采用了何种C++特性(C语言不具备),作用是什么?

template

Tsum(Ta,Tb)

return(a+b);

表示函数模板,用于将一类功能相同,参数类型和返回值不同的函数抽象为一个模板,方便模板函数调用。

11.请解释aaa.h中下面代码的功能(5分)

#if!

defined(AFX_MYSUDU_H__9B952BEA_A051_4026_B4E5_0598A39D2DA4__INCLUDED_)

#defineAFX_MYSUDU_H__9B952BEA_A051_4026_B4E5_0598A39D2DA4__INCLUDED_

......

#endif

这是预处理命令,可以保证多次包含此头文件时,只编译一次代码。

12.CMemoryState主要功能是什么(5分)

用于检测内存泄露。

13.请阅读下述代码,写出程序执行的结果(6分)

#include

usingnamespacestd;

classCBase

virtualvoidprint()

cout<

"

base"

endl;

voidDoprint()

print();

classCChild1:

publicCBase

child1"

classCChild2:

child2"

voidDoprint(CBase*base)

base->

Doprint();

voidmain()

CBase*base=newCBase();

CChild1*child1=newCChild1();

CChild2*child2=newCChild2();

Doprint(child1);

Doprint(child2);

Doprint(base);

base;

base=child1;

print();

child1;

child2;

child1

child2

base

这是C++中类的虚函数实现多态的一个实例。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1