covariant4.c

来自「linux下编程用 编译软件」· C语言 代码 · 共 47 行

C
47
字号
// { dg-do run  }// Copyright (C) 2005 Free Software Foundation, Inc.// Contributed by Nathan Sidwell 11 Feb 2005 <nathan@codesourcery.com>// Origin: bredelin@ucla.edu// Bug 19891: Incorrect covariant vtablesstruct Model {  bool full_tree;  virtual Model* clone() const =0;  virtual const char *name() const =0;  virtual ~Model() {}};struct R: virtual public Model {  virtual R* clone() const =0;};struct A: virtual public Model {  virtual A* clone() const=0;};struct RA: public R, public A {  virtual RA* clone() const=0;};static const char *string = "EQU";struct EQU: public RA {  virtual EQU* clone() const {return new EQU(*this);}  const char *name() const {return string;}};int main() {  Model* M1 = new EQU();  Model* M2 = M1->clone();  Model* M3 = M2->clone();  if (M1->name () != string)    return 1;  if (M2->name () != string)    return 2;  if (M3->name () != string)    return 3;    return 0;}

⌨️ 快捷键说明

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