在下面的帖子里看到这些问题,很少有会的.羞愧难当,高手们,谁会这写问题,
拣会的回答吧.我会好好学习的.

解决方案 »

  1.   

    1。namespace是做什么用的?
    2。现在需要一个指针,这个指针指向某个类的某个非静态成员函数,C++怎么声明这个指针?怎么对其赋值?如果是指向非静态成员变量又如何?
    3。为什么在switch语句中,如果在某个case下面写int i=1;会出错,而写成int i; i=1;却会编译通过?
    4。386+ CPU中的通用寄存器有eax、ebx、ecx、edx、esi、edi、esp和ebp。调用Windows API时,这其中哪几个寄存器的值不会被修改?
    5。某些成员函数的声明后往往加有const,这是什么意思?
    6。为什么在使用类对象作为函数参数时,往往选择使用引用或指针,而不是像简单变量那样直接传值?
    7。为什么构造函数不能重载,而析构函数往往都是虚函数?
    8。类B和类C都是由类A继承而来,而类D是由类B和类C双重继承而来。那么类D的实例中将有几个类A的实例?如果有两个,现在要引用其中一个,C++如何表达?
    9。什么叫upcast,什么叫downcast?什么叫RTTI?试着写一个程序用到typeid、static_cast、dynamic_cast这些C++运算符。
    10。MFC的RTTI与标准C++的RTTI实现有什么不同?CRuntimeClass是做什么用的?
    11。VC中C++标准的try-catch语法与微软扩展的__try、__except、__finally语法有什么不一样?使用异常处理的C++反汇编代码中经常有“mov eax, fs:[0]”这样的语句,那么fs:[0]处是什么东西?与异常处理有什么关系?
    12。SEH是怎么实现的?现在Windows平台下的C++编译器实现try-catch时是否用到了SEH?
    13。MFC程序的流程如何?程序从CRT的_WinMainCRTStartup开始执行后,是怎么跳到最后的CWinApp::InitInstance、CWinApp::Run的?
    14。请仔细阅读MFC关于窗口创建部分的代码,MFC为什么要在窗口创建时安装一个WH_CBT类型的钩子?MFC是怎么对消息处理的?窗口过程是如何将一个消息发送到某个C++类的成员函数这里的?为什么像CDocument这样的类,并没有任何窗口与之关联,依然能收到WM_COMMAND之类的消息?
    15。为什么CSocket不能在线程之间传递?还有哪些MFC类不能在线程之间传递?
    16。你现在有一个工程,你希望拿到别的机器上继续开发,那么只需要将工程目录下的哪些文件复制即可?你想开发一个程序,使其可以脱离MFC和CRT的运行时动态链接库独立运行,你需要如何更改工程设置?你会使用VC的工具Dependency Walker检察某个可执行模块(EXE或DLL)是否依赖于MFC和CRT动态链接库吗?
    17。试着将#include "StdAfx.h"从cpp文件中去掉,如何修改工程设置,才可以使其依然照常编译?你用过Batch Build、Custom Build、Custom AppWizard这些功能吗?
    18。利用嵌入汇编写一个__declspec(naked)的函数,使用stdcall调用规则,传入2个DWORD参数,并返回一个DWORD值。调用这个函数,希望不要出现堆栈错误。
    19。什么叫内核对象?什么叫User对象?什么叫GDI对象?可以对一个GDI对象使用DuplicateHandle复制吗?User对象可不可以被子进程继承?
    20。Windows是不是使用LDT(Local Descriptor Table)来实现进程保护的?选择器、线性地址、虚拟地址、物理地址都是什么意思?写一个程序尝试分别使用LocalXXX/GlobalXXX、HeapXXX和VirtualXXX函数使用内存,它们有什么不同?
    21。写一个Ping程序;写一个支持FTP与HTTP的下载程序。
    22。做一个可以被VB调用的DLL。
    23。利用Automation驱动Word打开一篇文档;利用ATL做一个ActiveX控件,可以在浏览器上显示当前系统时间。
    24。利用CRecordset写一个操作Access数据库的程序。然后利用ADO(可以使用MFC、ATL或者纯粹的API实现)写一个调用SQL Server存储过程的程序。
    25。利用Multimedia API做一个简单的媒体播放机,可以播放CD、VCD、MP3等。
    26。用Direct3D和OpenGL分别做一个旋转的正方体,当然,OpenGL版的最好做成屏幕保护程序。
    27。分别写程序演示Windows 98下的Flat Thunk机制和NT下的General Thunk机制。
    28。VC连接器生成的PE格式可执行文件都是以0x1000作为file alignment的。而Borland的连接器可以选择不同的file alignment。较小的file alignment可以缩小可执行文件的尺寸。Windows 98中,file alignment的最小合法值为512,而NT中还可以更小。写一个程序用来对编译好的PE执行文件的file alignment进行调整。当然,条件是这个程序依然能够正常执行。
    29。写一段代码,实现在Windows 98下直接从Ring3跳入Ring0。
    30。写一个程序,执行完后自己将自己从磁盘上删除。
      

  2.   

    这么多问题,还不如自己到www.google.com去查C++教程。
      

  3.   

    建议好好看看CSDN原来的帖子,以上许多问题都已有人解答。另外学学C++基础,到windows核心编程
      

  4.   

    只要求回答下面的问题:其他略微懂一点或不感兴趣.
    2。现在需要一个指针,这个指针指向某个类的某个非静态成员函数,C++怎么声明这个指针?怎么对其赋值?如果是指向非静态成员变量又如何?
    好象是c++之父编写的c++ programming的习题.3。为什么在switch语句中,如果在某个case下面写int i=1;会出错,而写成int i; i=1;却会编译通过?以前碰到过,莫名其妙.4。386+ CPU中的通用寄存器有eax、ebx、ecx、edx、esi、edi、esp和ebp。调用Windows API时,这其中哪几个寄存器的值不会被修改?根本不会.6。为什么在使用类对象作为函数参数时,往往选择使用引用或指针,而不是像简单变量那样直接传值?省去了大量数据的传递,我会,对否?7。为什么构造函数不能重载,而析构函数往往都是虚函数?我觉得构造函数可以重载啊.重新编一个就可以啊.至于析构函数往往都是虚函数,为什么?是不是一般用户必须重载,因为到底需要析构哪些东东往往不固定.11。VC中C++标准的try-catch语法与微软扩展的__try、__except、__finally语法有什么不一样?使用异常处理的C++反汇编代码中经常有“mov eax, fs:[0]”这样的语句,那么fs:[0]处是什么东西?与异常处理有什么关系?根本不会.15。为什么CSocket不能在线程之间传递?还有哪些MFC类不能在线程之间传递?曾经碰到过这个问题.不知所以然.17。试着将#include "StdAfx.h"从cpp文件中去掉,如何修改工程设置,才可以使其依然照常编译?不会.30。写一个程序,执行完后自己将自己从磁盘上删除。不会.
      

  5.   

    up, too many to answer and many I also do not knowand I think you never expect here by other's answer
    you can understand the question all
      

  6.   

    1: 当两个名字相同的变量在同一作用域中是会发生冲突,namespace 就是解决这些冲突的。
    2: 成员变量:应该是type classname::* p.
    3:  不知是不是编译器的原因
    4: 不知道。
    5: const member functions 是为了指明哪个member funtions 可由const对象调用。
    6: 因为效率问题。
    7: 因为构造函数是构造不同的class当然不能重载了。
        析构函数一般是在BASE class 是虚函数,
        原因是为了更好的进行多态析构处理。
    8: 如果不是虚拟继承就是两个实体,反之就是一个。
    9: 我只知道RTTI是运行时类型识别。
    10:MFC的RTTI主要是由”宏“构成的,而C++标准的RTTI主要是由“虚函数”构成的。
        小弟愚见。其他的多数不会:)
      

  7.   

    30.你可以要求系统重新启动,并且在启动之前定义schedule,让系统来完成这个工作!
      

  8.   

    5、答:为了防止传递进函数的参数被改变,了解以下const的用法就知道了。
    9、答:RTTI代表运行期识别  即Runtime type information 好象是这样
    16、去掉debug目录、realease目录
      

  9.   

    /*****************************感谢关注****************************/
    //////////////////////////////Creamdog/////////////////////////////To小红帽:
    你的方法是很不好的,可以说完全达不到要求下面的代码由Gary Nebbett写就.Gary Nebbett乃是WINDOWS NT/2000 NATIVE API REFERENCE的作者.乃NT系统一等一的高手.下面就分析一些他的这段代码. 
    这段代码在PROCESS没有结束前就将启动PROCESS的EXE文件删除了. 
    int main(int argc, char *argv[]) 

    HMODULE module = GetModuleHandle(0); 
    CHAR buf[MAX_PATH]; 
    GetModuleFileName(module, buf, sizeof buf); 
    CloseHandle(HANDLE(4)); 
    __asm { 
    lea eax, buf 
    push 0 
    push 0 
    push eax 
    push ExitProcess 
    push module 
    push DeleteFile 
    push UnmapViewOfFile 
    ret 

    return 0; 

    现在,我们先看一下堆栈中的东西 偏移 内容 
    24 0 
    20 0 
    16 offset buf 
    12 address of ExitProcess 
    8 module 
    4 address of DeleteFile 
    0 address of UnmapViewOfFile 调用RET返回到了UnmapViewOfFile,也就是栈里的偏移0所指的地方.当进入UnmapViewOfFile的流程时,栈里见到的是返回地址DeleteFile和HMODUL module.也就是说调用完毕后返回到了DeleteFile的入口地址.当返回到DeleteFile时,看到了ExitProcess的地址,也就是返回地址.和参数EAX,而EAX则是buffer.buffer存的是EXE的文件名.由GetModuleFileName(module, buf, sizeof buf)返回得到.执行了DeleteFile后,就返回到了ExitProcess的函数入口.并且参数为0而返回地址也是0.0是个非法地址.如果返回到地址0则会出错.而调用ExitProcess则应该不会返回. 
    这段代码的精妙之处在于: 
    1.如果有文件的HANDLE打开,文件删除就会失败,所以,CloseHandle(HANDLE(4));是十分巧妙的一手.HANDLE4是OS的硬编码,对应于EXE的IMAGE.在缺省情况下,OS假定没有任何调用会关闭IMAGE SECTION的HANDLE,而现在,该HANDLE被关闭了.删除文件就解除了文件对应的一个句柄. 
    2.由于UnmapViewOfFile解除了另外一个对应IMAGE的HANDLE,而且解除了IMAGE在内存的映射.所以,后面的任何代码都不可以引用IMAGE映射地址内的任何代码.否则就OS会报错.而现在的代码在UnmapViewOfFile后则刚好没有引用到任何IMAGE内的代码. 
    3.在ExitProcess之前,EXE文件就被删除了.也就是说,进程尚在,而主线程所在的EXE文件已经没了.(WINNT/9X都保护这些被映射到内存的WIN32 IMAGE不被删除.) 
      

  10.   

    24。利用CRecordset写一个操作Access数据库的程序。然后利用ADO(可以使用MFC、ATL或者纯粹的API实现)写一个调用SQL Server存储过程的程序。
    25。利用Multimedia API做一个简单的媒体播放机,可以播放CD、VCD、MP3等。
    26。用Direct3D和OpenGL分别做一个旋转的正方体,当然,OpenGL版的最好做成屏幕保护程序。这三题未免有些太简单了,做这一类工作的程序员每一题大概只要花15分钟就可以搞定吧
      

  11.   

    是的,完全用WIZZARD就可以搞定
    可以不回答.非常感谢.
      

  12.   

    1.namespace即命名空间,其作用是使不同空间内的类等类型可以命名相同,而使用起来不会发生混淆等。
    2.假设该函数原型为static unsigned long Process(void *&p);则可声明指针形式如下:unsigned long (*func)(void *&);赋值时可以如下:func = Process;注意:指向的函数必须为静态,同时还要注意__stdcall和__cdel的问题。
    3.msdn上的原文:
    It is illegal to jump past a declaration with an initializer unless the declaration is enclosed in a block.The scope of the initialized variable lasts until the end of the switch statement unless it is declared in an enclosed block within the switch statement.但如果没有default,上述问题不存在。4.无论是数据寄存器、变址寄存器还是堆栈指针都会被改变。
    5.表示此函数不改变他使用的对象的值。
    6.函数参数值传递时,函数体首先会对参数进行拷贝。因此,若传递类对象本身,则拷贝数据过大;使用引用则使得函数体内可以直接修改类中成员;使用指针,拷贝的也只是个指针。
    7.构造函数是内联inline的,不能作为虚函数。另外,声明为虚函数没有意义啊,难道其派生类能与基类同名吗?
    8.1个
    9.
    10.只是一些扩展而已。CRuntimeClass是伴随着很多CObject扩展类的对象,使用DECLARE_DYNAMIC等几个宏引入。用于维护mfc派生类的类型等信息。
    11、
    __try Begins a guarded body of code. Used with the __except keyword to construct an exception handler, or with the __finally keyword to construct a termination handler. 
    __except Begins a block of code that is executed only when an exception occurs within its associated __try block. 
    __finally Begins a block of code that is executed whenever the flow of control leaves its associated __try block. 
    __leave Allows for immediate termination of the __try block without causing abnormal termination and its performance penalty.  fs是一个段寄存器
    12、windows如何实现Structured Exception Handling不清楚。try\catch中应该使用了SEH提供的异常诊断机制。
    13、winmaincrtstartup->winmain->afxwinmain->{afxbeginthread->InitInstance->Run}
    14.mfc为窗口控制加了许多内在的机制。在文档试图模型中,docmanager为文档类和窗口类建立了一些映射关系。
    15.CSocket类内建了一个窗口,使用了窗口的消息循环。16、.h,.c,.cpp,.dsp,.rc, not using MFC,察看是否用mfc42.dll,mfvcrt.dll
    17.not using precompiled headers
    后面的题怎么都像是考试????
      

  13.   

    真的很变态!!!
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up
    up