CPP: RTTI初探

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】免费获取数百本计算机经典书籍

    CPP: RTTI初探

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/44866

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 下午9:30
下一篇 2023年2月8日 下午9:30

相关推荐