1、 int nTemp = MAX_NUM*10;/宏的功能只是简单的字符替换,MAX_NUM*10表示100+200*10,所以用宏要小心 则 Temp = _2100_ 。 5 请给出如下程序的结果 (3 分 ) char szTemp1000 = ; int nLen1 = sizeof(szTemp); int nLen2 = strlen(szTemp);/strlen的计算结果不包含结束符0 strcpy(szTemp, abc); int nLen3 = sizeof(szTemp); int nLen4 = strlen(szTemp); int nTemp100; int *p
2、Temp = nTemp; int nLen5 = sizeof(pTemp);/在32位系统中,指针只占4位字节,不管它指向地址的内容有多大! char szResult200 = 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 线程范围; _进程_ /
3、 进程有独立的内存,是线程的管理者,线程是进程的执行者 CpU 调度时,针对进程 or 线程; _线程_/ 线程才是执行者 函数调用堆栈,针对进程 or 线程。 _进程_(3 分 ) / 进程才有独立内存,堆栈属于内存的一部分 8 调用函数 bbb 后,输出是什么 (4 分 ) void c(int x) / 参数为数值传递,不是引用传递 char szTemp10 = x = 2; sprintf(szTemp, %d, x); afxDump m_hThread, INFINITE);有何作用。WaitForSingleObject是表示等待线程的一个函数。 参数为INFINITE表示一直
4、等待线程CWinThread执行结束后,再继续处理自身程序。 6. _stdcall 、 _cdecl 、 _pascal 在什么方面有所不同。这些都是一些函数参数的调用约定,告诉编译器函数参数压栈的顺序,以及压入堆栈的内容由谁来清除,是调用者还是函数本身清除堆栈的内容。简单列表如下: Directive parameterorder Clean-uppassesparametersin registers? pascalLeft-to-rightRoutineNo cdeclRight-to-leftCallerNo stdcallRight-to-leftRoutineNo 7 请把下述代
5、码加上异常处理。 (6 分 ) int MyWriteFile(CString strFileName, CString strText) int nRet = 0; CFile myFile; myFile.Open(strFileName,CFile:modeWrite|CFile:shareExclusive|CFile:modeCreate,NULL); int nLen = strText.GetLength(); myFile.Write(char*)(LpCSTR)strText, nLen); myFile.Close(); return nRet; _try nRet= my
6、File.Open(strFileName, CFile: if(!nRet) / 输出异常信息 _leave;/ 结束try块,跳到_finaly代码块 nRet = myFile.Write(char*)(LpCSTR)strText, nLen); _finaly returnnRet; 8 请解释“ func ”为何种类型,这种类型的作用什么,变量 ttt 的值是多少? typedef int (*func)(int, int*); int xxx(int a, int *p) return a + *p; int dowork(func aaa, int bbb, int *c) r
7、eturn aaa(bbb, c); int sss = 4; int ttt = dowork(&xxx, 3,&sss);func表示一个函数指针,它指向参数为int,int*,返回值为int的函数。ttt的值为7 9 请问下述代码中 : int operator+( )起什么作用? this 是什么? c 的值最终为多少? (6 分) class Fruit public: Fruit() weight = 2; Fruit(int w) weight = w; int operator+(Fruit f) return this-weight * f.weight; private:
8、int weight; ; Fruit aaa; Fruit bbb(4); int c = aaa + bbb;int operator+()表示重载类的“+”号运算符,this表示对象本身的指针,本例中它指向类的对象aaa;c最终的结果为8(8 = 2 *4)。 10. 请解释下面代码采用了何种 C+ 特性( C 语言不具备),作用是什么? template T sum(T a, T b) return (a + b);表示函数模板,用于将一类功能相同,参数类型和返回值不同的函数抽象为一个模板,方便模板函数调用。 11 请解释 aaa.h 中下面代码的功能 (5 分 ) #if!defin
9、ed(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 using namespace std; class CBase virtual void print() coutDoprint(); void main() CBase* base = new CBase(); CChild1* child1 = new CChild1(); CChild2* child2 = new CChild2(); Doprint(child1); Doprint(child2); Doprint(base); base; base = child1;print(); child1; child2; child1 child2 base 这是C+中类的虚函数实现多态的一个实例。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1