| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2108 人关注过本帖
标题:new创建对象与用RUNTIME_CLASS动态创建对象有什么不同?
只看楼主 加入收藏
cz522321
Rank: 1
等 级:禁止访问
威 望:2
帖 子:569
专家分:5
注 册:2006-3-13
结帖率:100%
收藏
 问题点数:0 回复次数:7 
new创建对象与用RUNTIME_CLASS动态创建对象有什么不同?
new创建对象与用RUNTIME_CLASS动态创建对象有什么不同?
搜索更多相关主题的帖子: CLASS动态 RUNTIME new 对象 
2006-11-02 18:27
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
是一样的吗?似乎不是一样的吧?
RUTIME_CLASS(MyClass)只是返回一个&MyClass::classMyClass.并没有动态创建什么东西啊!

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-11-02 19:20
cz522321
Rank: 1
等 级:禁止访问
威 望:2
帖 子:569
专家分:5
注 册:2006-3-13
收藏
得分:0 
RUTIME_CLASS是动态创建对象的

2006-11-02 19:37
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
没有啊,只是一个宏。

#define RUNTIME_CLASS(Mclass) \
&Mclass::class##Mclass

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-11-02 19:43
cz522321
Rank: 1
等 级:禁止访问
威 望:2
帖 子:569
专家分:5
注 册:2006-3-13
收藏
得分:0 
CSingleDocTemplate* pDocTemplate;
pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CTry1Doc),
RUNTIME_CLASS(CMainFrame),
RUNTIME_CLASS(CTry1View));
AddDocTemplate(pDocTemplate);
上面的代码可以用
CMainFrame *m_pMainFrame=new CMainFrame;
m_pMainFrame->Create(,,,);
m_pMainFrame->,,,
来代替

2006-11-02 19:49
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 
这个我没试过,不清楚,不过RUNTIME_CLASS只是宏,不是new

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-11-02 19:52
corrupt
Rank: 2
等 级:新手上路
威 望:3
帖 子:535
专家分:0
注 册:2004-9-29
收藏
得分:0 
RUNTIME_CLASS 就是一个宏...如wfpb 所说

2006-11-03 08:29
Bekky
Rank: 3Rank: 3
等 级:新手上路
威 望:7
帖 子:354
专家分:0
注 册:2006-5-29
收藏
得分:0 

如果大家看过《深入浅出MFC》就应该知道RUNTIME_CLASS是个什么东西了。
一下是CRuntimeClass的结构:
struct CRuntimeClass
{
// Attributes
LPCSTR m_lpszClassName;
int m_nObjectSize;
UINT m_wSchema; // schema number of the loaded class
CObject* (PASCAL* m_pfnCreateObject)(); // NULL => abstract class
CRuntimeClass* m_pBaseClass;
// CRuntimeClass objects linked together in simple list
static CRuntimeClass* pFirstClass; // start of class list
CRuntimeClass* m_pNextClass; // linked list of registered classes
};
它是记载每个类的信息的,然后用DECLARE_DYNAMIC, DECLARE_DYNCREATE, or DECLARE_SERIAL
把这些信息串起来,这样的话,就会把MFC中从CObject派生来的类全部串起来,这样才会有我们以后的:消息流动,就是你不用指定方向他也能知道向哪里走;得到某个类的父与子等等。更重要的能够动态创建,就是你把窗口关掉后,下次打开的时候你不用再输入类名,以及相关的一些动作,他能自动创建相关窗口。

new和RUNTIEM_CLASS八杆子都打不着。
要说有联系就是,如果你new从CObject派生的类时,MFC会自动把类的相关信息记录下来。


我的编译环境为WinXp + VC 6.0 http://blog..cn/yobo
2006-11-03 09:59
快速回复:new创建对象与用RUNTIME_CLASS动态创建对象有什么不同?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014918 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved