#include <iostream>

 class A
{
public:
A(){}
~A(){}
virtual int data(){return ;}
};
class B:public A
{
public:
B(){}
~B(){}
int data(){return ;}
}; class C:public A
{
public:
C(){}
~C(){}
int data(){return ;}
}; class D:public C
{
public:
D(){}
~D(){}
int data(){return ;}
}; int main()
{ std::cout<<"dynamic_cast begin \n";
A *a=new A;
B *b=new B;
C *c=new C;
D *d=new D; if(dynamic_cast<B*> (a)) //this will fail 派生类不能指向基类
{
std::cout<<"A *a convert B class ok\n";
} if(dynamic_cast<A*> (b)) // this will be ok 基类指向派生类 ok
{
std::cout<<"B *b convert A class ok\n";
} if(dynamic_cast<C*> (a)) // 派生类不能指向基类
{
std::cout<<"A *a convert C class ok\n";
} if(dynamic_cast<A*> (c)) //c派生类 所以可以被A指向
{
std::cout<<"A *a convert C class ok\n";
} if(dynamic_cast<A*> (d)) // A <- C <- D 基类可以指向派生类 ok
{
std::cout<<"D *d convert A class ok\n";
} if(dynamic_cast<D*> (c)) // 派生类不能指向基类
{
std::cout<<"C *c convert D class ok\n";
} if(dynamic_cast<C*> (d)) // C基类可以指向派生类D ok
{
std::cout<<"D *d convert C class ok\n";
} if(dynamic_cast<D*> (d)) // ok
{
std::cout<<"d *d convert D class ok\n";
} std::cin.get();
return ;
}

dynamics_cast<>的更多相关文章

随机推荐

  1. HDU1978 记忆化搜索

    How many ways Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  2. Daily Scrum 10.30

    由于最近一段时间吴文会同学身体欠安,经过讨论我们对任务做了一下调整,暂时由罗洪运同学接手界面部分的开发.部分进度较快的同学的任务已经快要完成,工作重点也会转为整体开发和协助其他同学开发. 下面是今天的 ...

  3. js 数组排序

    sort()方法使数组中的元素按照一定的顺序排列. 语法: arrayObject.sort(方法函数) 参数说明: 1.如果不指定<方法函数>,则按unicode码顺序排列. 2.如果指 ...

  4. C# @符号的作用, 可定义关键字为变量名

    一 字符串中的用法字符@表示,其后的字符串是个“逐字字符串”(verbatim string).@只能对字符串常量作用.1.用于文件路径以下是引用片段:string s_FilePath =" ...

  5. [转]nls_lang设置

    1. NLS_LANG 参数组成NLS_LANG参数由以下部分组成:NLS_LANG=<Language>_<Territory>.<Clients Characters ...

  6. js的extend和fn.extend使用

    $.fn.extend扩展的是一个jQuery对象函数,$.extend扩展的是一个jQuery全局函数 <!DOCTYPE html> <html> <head> ...

  7. JavaBean组件的基本使用-语法

    <jsp:useBean id="实例化对象名称" scope="保存范围" class="包.类名"> </jsp:us ...

  8. what's the difference between dim as and dim as new?

    what's the difference between dim as and dim as new? There is no difference with value types (Intege ...

  9. Nginx配置proxy_pass转发的/路径问题

    Nginx配置proxy_pass转发的/路径问题 在nginx中配置proxy_pass时,如果是按照^~匹配路径时,要注意proxy_pass后的url最后的/,当加上了/,相当于是绝对根路径,则 ...

  10. TF-IDF 文本相似度分析

    前阵子做了一些IT opreation analysis的research,从产线上取了一些J2EE server运行状态的数据(CPU,Menory...),打算通过训练JVM的数据来建立分类模型, ...