在<<精通MFC>>中P111页:
C++语言不支持动态创建,但CObject提供了动态创建对象的能力.//动态创建
CRuntimeClass *pRuntimeClass =RUNTIME_CLASS(CPerson)
CObject *pObject=pRuntimeClass->CreateObject();
ASSERT(pOject->IsKindOf(RUNTIME_CLASS(CPerson)));
CPerson *pPerson2=static_cast<CPerson*>(pObject);
//
pPerson2->m_firstName="xiaohua";
pPerson2->m_lastName="Liu";
delete pPerson2;
疑问一:
MFC是不是多此一举了,为什么不直接用?
CPerson* pPerson2=new CPerson;
pPerson2->m_firstName="xiaohua";
pPerson2->m_lastName="Liu";
delete pPerson2;
疑问二:
C++中不可以用new Class吗?
C++语言不支持动态创建,但CObject提供了动态创建对象的能力.//动态创建
CRuntimeClass *pRuntimeClass =RUNTIME_CLASS(CPerson)
CObject *pObject=pRuntimeClass->CreateObject();
ASSERT(pOject->IsKindOf(RUNTIME_CLASS(CPerson)));
CPerson *pPerson2=static_cast<CPerson*>(pObject);
//
pPerson2->m_firstName="xiaohua";
pPerson2->m_lastName="Liu";
delete pPerson2;
疑问一:
MFC是不是多此一举了,为什么不直接用?
CPerson* pPerson2=new CPerson;
pPerson2->m_firstName="xiaohua";
pPerson2->m_lastName="Liu";
delete pPerson2;
疑问二:
C++中不可以用new Class吗?
解决方案 »
- 动态链接库,release不能生成dll文件
- 怎么实现把一个窗体内的相同类型的控件都变成不可用状态?
- (初学)MFC框架编程问题,请教大虾。CEditView中edit控件如何使得每行只能输入16个字符
- 如何解决对话框在大字体下变形
- 1.文件过滤驱动程序该如何更准确编写过滤代码?2.加载文件过滤驱动后,退出移动硬盘时出现蓝屏,怎么办?
- 对不同线程之间传CWnd派生类的MFC object的一些困惑
- KillTimer函数虽然简单,但是使用不当还是带来了问题,尤其是再多线程中!
- 如何在重载图片时删除原有图片
- VC中怎么解决全局变量?
- 打开文件时,怎样使得默认路径为当前路径?
- 如何实现半透明的控件或则窗体?
- 在动态库中还能调用com组件啊?我调用老是失败
比如给你一个类叫CMyClass1,你可以CMyClass1 my = new CMyClass1;
但是如果有一系列的类CMyClass1 ~ CMyClassN,
让你根据类名创建相应的对象你怎么办。 \
"CMyClassN" my = new "CMyClassN";//是不被支持的
你可能会想到用一堆select case语句判断类名字符串,
但有时候你都不知道你要创建的类会是什么,select case只能是列举已有的类。
非常感谢coolzdp(unreal张师傅),huamoran(花蓦然),wlwlxj(wlwlxj)!
谢谢songlife33(roger) 关注.
结贴了