------------《深入浅出MFC》中RTTI仿真问题求解---------------
书中在分析IMPLEMENT_DYNAMIC宏的时候,提到了结构AFX_CLASSINIT(见书99页)
IMPLEMENT_DYNAMIC替换后,形成一个AFX_CLASSINIT构造函数,该函数用于将系统中的
CRuntimeClass结构形成链表,问题是:IMPLEMENT_DYNAMIC是放在*.cpp中的,那么什么时候才能执行上面提到的那个构造函数呢?
问题点数:20、回复次数:5Top
1 楼xiaoliuzi(小六子)回复于 2002-01-13 23:33:36 得分 0
老兄,你知道什么是构造函数吗?Top
2 楼penis205(penis205)回复于 2002-01-14 00:08:29 得分 0
你是否刚学vcTop
3 楼nanbingjun(南柄俊)回复于 2002-01-14 01:40:18 得分 20
你仔细看源代码:
Static AFX_CLASSINIT _init_CObject(&CObject::classCObject); 是不是这样?
夷!什么意思呢?
哦!原来声明一个静态(Static)变量啊!
变量名: _init_CObject
变量类型: AFX_CLASSINIT(是一个结构,即类)
你应该知道一个类的示例在什么时候被初始化.是的!就是在声明示例的时候!
如:
CDocument mydoc; ----> //这时候CDoucment的默认构造函数会自动调用,
同样地道理...
AFX_CLASSINIT _init_CObject; //这时候AFX_CLASSINIT的构造函数会自动调用,
其原形为AFX_CLASSINIT::AFX_CLASSINIT(),
它是编译器悄悄地弄进去的,用于初始化类的。
那么
AFX_CLASSINIT _init_CObject( pRuntimeClass)
会发生什么事情呢?可想而知,会调用 AFX_CLASSINIT::AFX_CLASSINIT(pRuntimeClass)
构造函数的,这就是C++的重载的妙用所在。。。
如不明白 请联系 :
QQ: 29142555
E-MAIL: nanbingjun@263.net
其实它和 CMyWinApp thiApp Top
4 楼baihaiying206()回复于 2002-01-14 08:44:41 得分 0
UP
Top
5 楼shengao(TopGun )回复于 2002-01-14 12:29:33 得分 0
我知道构造函数是怎么回事情,问题是
但是程序的流程什么时候走到这里。
因为这里是成员函数的实现部分,只有在程序中调用到这些函数的时候,函数的代码才被执行,那么仅仅在这里声明一下,请告诉我什么时候能执行到这里。Top




