Dynamic_cast

原创 2006年05月25日 13:53:00

// RTTI_CAST.cpp : Defines the entry point for the console application.
//

/// Summary:
///   There must have inheritress between Source type and target type.
///   if not, static_cast will bring compile error; 
///     dynamic_cast will return false or throw exception.

#include <iostream>
using namespace std;

class A
{
public:
 A(int j = 0): i(j)
 {

 }
 
 virtual ~A() {}

 virtual void Output()
 {
  cout<< i;
 }
private:
 int i;
};

class B : public A
{
public:
 B() : A(1),j(2)
 {

 }

 virtual ~B() {}

 virtual void Output()
 {
  A::Output();

  cout<< j<<endl;
 }
private:
 int j;
};


int _tmain(int argc, _TCHAR* argv[])
{
 char a = 'a';
 int * pI = static_cast<int*>(&a); // failed.

 B b;

 A* pA = dynamic_cast<A*>(&b);

 pA->Output();
 
 const type_info& aInfo = typeid(A);
 const type_info& bInfo = typeid(B);
 
 try
 {
  B* pB = dynamic_cast<B*>(pA);

  pB->Output();
 }
 catch(bad_cast& e)
 {
  std::cout<<e.what()<<endl;
 }
 

 return 0;
}

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C++标准转换运算符dynamic_cast

C++标准转换运算符dynamic_cast     dynamic_cast (expression) dynamic_cast运算符,应该算是四个里面最特殊的一个,因为它涉及...

c++关键字详解(volatile, mutable, explicit, dynamic_ cast<T>(expression))等

1  volatile 有些变量是用volatile关键字声明的。当两个线程都要用到某一个变量且该变量的值会被改变时,应该用volatile声明,该关键字的作用是防止优化编译器把变量从内存装入CPU...

C++ 中dynamic_cast<>的使用方法

/*这是从网上摘下的例子,主要讲述了 dynamic_cast /*  作用:将一个基类对象指针(或引用)cast到继承类指针,dynamic_cast会根据基类指针是否真正指向继承类指针来做相应处理...

C++中深入理解dynamic_cast

dynamic_cast运算符的主要用途:将基类的指针或引用安全地转换成派生类的指针或引用,并用派生类的指针或引用调用非虚函数。如果是基类指针或引用调用的是虚函数无需转换就能在运行时调用派生类的虚函数...

C++标准转换运算符dynamic_cast

dynamic_cast (expression) dynamic_cast运算符,应该算是四个里面最特殊的一个,因为它涉及到编译器的属性设置,而且牵扯到的面向对象的多态性跟程序运行时的状态也有关...

浅议 Dynamic_cast 和 RTTI

对于问题要较真,在解决这个问题中会学到很多,远远超过自己期望,锻炼思维,享受这个过程。 问题: Static_cast 与 Dynamic_cast的区别 来自书本上的解释:   用...

dynamic_cast详解

作为四个内部类型转换操作符之一的dynamic_cast和传统的C风格的强制类型转换有着巨大的差别。除了dynamic_cast以外的转换,其行为的都是在编译期就得以确定的,转换是否成功,并不依赖被转...

C++标准转换运算符dynamic_cast

原文地址:http://www.cnblogs.com/ider/archive/2011/08/01/cpp_cast_operator_part5.html dynamic_cast ...

觉得介绍dynamic_cast比较好的文章

dynamic_cast介绍 dynamic_cast (expression) 这个表达式将 expression 转换为一个 type-id 类型的对象。 Type-id 必须是一个指针...

c\c++复习基础要点15----c++运行时类型识别 dynamic_cast typeid type_info

C++提供了两个操作符合一个类来实现运行时类型识别机制,它们是操作符dynamic_cast、操作符typeid和类type_info   dynamic_cast操作符:   dynamic...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)