运行时类信息机制

// MFCDynimic.cpp : Defines the entry point for the console application.
//
/*
运行时类信息机制:在程序运行过程中,可以判断类对象的相关类的信息以及继承派生类。
*/

#include "stdafx.h"
#include "MFCDynimic.h"

class CAnimal:public CObject
{
DECLARE_DYNAMIC(CAnimal);
};

IMPLEMENT_DYNAMIC(CAnimal,CObject);

class CDog:public CAnimal
{
DECLARE_DYNAMIC(CDog);
};

IMPLEMENT_DYNAMIC(CDog,CAnimal);

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
CDog yellowdog;
if (yellowdog.IsKindOf(RUNTIME_CLASS(CObject)))
{
printf("yellowdog is CObject!n");
}
else
{
printf("yellowdog isn‘‘t CObject!n");
}

return 0;
}

时间: 2024-08-27 11:31:15

运行时类信息机制的相关文章

C++MFC编程笔记day04 运行时类信息和窗口的动态、静态切分

运行时类信息 程序在运行时,获取对象类的信息及类的继承关系 实现: 1.定义类继承自CObject类. 2.类内声明宏DECLARE_DYNAMIC(),类外实现宏IMPLEMENT_DYNAMIC() 3.使用: BOOL IsKindOf(CRuntimeClass* pClass)//对象是否属于某个类 CRuntimeClass* GetRuntimeClass( );//获取对象运行时类信息,经常使用RUNTIME_CLASS(类名)代替. 示例: #include "stdafx.h

初识MFC----运行时类信息机制

1.运行时类信息机制的作用 程序运行过程中,可以获知对象的相关类的信息 2.运行时类信息机制的使用 2.1类必须派生自CObject类 2.2类内必须添加声明宏 DECLARE_DYNAMIC 2.3类外必须添加实现宏 IMPLEMENT_DYNAMIC CObject::IsKindOf(...) -来判断对象是否属于某个类 3.数据结构 struct CRuntimeClass { LPCSTR m_lpszClassName;  //类的名称 int m_nObjectSize;  //类

运行时类型信息RTTI

我们在写C++代码的时候经常碰到使用dynamic_cast进行类型转换的情况,也都知道经过dynamic_cast的转换更加安全,因为dynamic_cast进行了类型检查. 但是可能很多人不知道dynamic_cast是C++ 运行时类型信息(RTTI)机制链条上的一个节点. RTTI提供了两个操作符和一个类: dynamic_cast typeid type_info 整个RTTI, 作为一个整体,暴露给程序员的就是这三个元素.因此我们关注的焦点也就在它们身上了. 什么是RTTI 在C++

创建运行时类的对象,调用指定的属性方法构造器

1 使用newInstance(),实际上是调用运行时空参的构造器    注意构造器的权限修饰符要足够,同时必须有一个空参的构造器. 2 调用指定的属性方法构造器 package lianxi1; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Meth

在Amazon FreeRTOS V10中使用运行时统计信息

在MCU on Eclipse网站上看到Erich Styger在8月2日发的博文,一篇关于在Amazon FreeRTOS V10中使用运行时统计信息的文章,本人觉得很有启发,特将其翻译过来以备参考.原文网址:https://mcuoneclipse.com/2018/08/02/tutorial-using-runtime-statistics-with-amazon-freertos-v10/ FreeRTOS包含一个很好的功能,可以向我提供有关每个任务在系统上运行的时间的信息: Free

java反射系列四之创建运行时类的对象

一.概念认知 二.代码示例 package reflect; public class TestConstructor { public static void main(String[] args) throws Exception { TestConstructor T = new TestConstructor(); T.test(); } public void test() throws Exception{ String className = "reflect.Person&quo

简单测试运行时类信息(RTTI),附详细例子

新建一个单元文件,填写如下代码,然后保存为 ClassInfoUnit.pas,这里定义了一个结构,用来读取指定类的信息. [delphi] view plaincopy unit ClassInfoUnit; interface uses Classes, TypInfo; type { 存放类属性的动态数组 } PropInfoArray = array of PPropInfo; { 用法:首先声明该结构的变量,然后通过 Create 函数或 Target 属性指定要获取 } { 信息的类

Java:日历类、日期类、数学类、运行时类、随机类、系统类

一:Calendar类 java.util 抽象类Calendar   1.static Calendar getInstance()使用默认时区和语言环境获得一个日历. 2. int get(int field) 返回给定日历字段的值. java.lang.Object 继承者 java.util.Calendar 所有已实现的接口: Serializable, Cloneable, Comparable<Calendar> 直接已知子类: GregorianCalendar 对于日期字段:

OC运行时和方法机制笔记

在OC当中,属性是对字段的一种特殊封装手段. 在编译期,编译器会将对字段的访问替换为内存偏移量,实质是一种硬编码. 如果增加一个字段,那么对象的内存排布就会改变,需要重新编译才行. OC的做法是,把实例变量当做一种存储偏移量所用的特殊变量交给类对象来管理,偏移量会在运行期动态查找,这样无论何时访问实例变量,总能找到正确的地址. 可以在对象的内部(.m当中)直接使用下划线变量而不用getter或setter,会绕过方法派发过程,绕过内存管理和线程安全管理语义,会提升性能,同样不会触发KVO,会避免