Shape.h
#ifndef SHAPE_H #define SHAPE_H class CShape { private: int color_; virtual void Draw(); }; class CRecttangle: public CShape { private: int height_; int width_; void Draw(); }; #endif
Shape.cpp
#include "StdAfx.h" #include "Shape.h" void CShape::Draw() { color_ = 0; } void CRecttangle::Draw() { height_ = 0; width_ = 0; }
RTTI.cpp
// RTTI.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "Shape.h" #include <iostream> #include <typeinfo> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { CRecttangle recttangle; CShape *pShape = &recttangle; CShape &rShape = recttangle; cout << typeid(CShape).name() << endl; cout << typeid(float).name() << endl; cout << typeid(5).name() << endl; cout << typeid(pShape).name() << endl; cout << typeid(rShape).name()<< endl; cout << typeid(*pShape).name() << endl; cout << typeid(*pShape).raw_name() << endl; system("pause"); return 0; }
运行结果:
class CShape
float
int
class CShape *
class CRecttangle
class CRecttangle
.?AVCRecttangle@@
请按任意键继续. . .
总结:
定义类时,类要有虚函数
编译设置/GR,C++-->语言-->启用运行类型信息
VC默认该值没有选,此情况下projec可以使用
GR去掉,程序运行时崩溃
原文链接: https://www.cnblogs.com/zhangsk/archive/2012/03/22/2410953.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/44866
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!