⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dyncast6.c

📁 this is a gcc file, you can download it and learn its usetility, for further detail please look at t
💻 C
字号:
// Special g++ Options: -w -ansi -pedantic-errors// Copyright (C) 2000 Free Software Foundation, Inc.// Contributed by Nathan Sidwell 20 June 2000 <nathan@codesourcery.com>// Origin GNATS bug report 143 from Carlo Wood <carlo@runaway.xs4all.nl>// We were generating incorrect type_info structures, and hence breaking// dynamic_cast.#include <stdio.h>class OBASE { public: virtual void bz () {}};class IBASE { public: virtual void by () {}};class V {public:int m; };class A : public virtual V { };class AA : public A {};class B : public OBASE, public A { public: virtual void foo(void) { } };class B1 : public OBASE, public AA { public: virtual void foo(void) { } };class C : public IBASE, public virtual V { };class D : public B, public C { };class E : public B, public virtual V { };class E1 : public B1, public virtual V {};class E2 : public B1, public A, public virtual V {};int main(void){  D d;  E e;  E1 e1;  E2 e2;  int code = 0;  OBASE* osd = &d;  OBASE* ose = &e;  OBASE* ose1 = &e1;  OBASE* ose2 = &e2;  if (!dynamic_cast<V*>(osd))    {      printf ("fail osd\n");      code++;    }    if (!dynamic_cast<V*>(ose))    {      printf ("fail ose\n");      code++;    }  if (!dynamic_cast<V*>(ose1))    {      printf ("fail ose1\n");      code++;    }  if (!dynamic_cast<V*>(ose2))    {      printf ("fail ose2\n");      code++;    }  return code;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -