p2846a.c

来自「用于进行gcc测试」· C语言 代码 · 共 36 行

C
36
字号
// { dg-do run  }// Shows that problem of initializing one object's vtable pointer from// another object's vtable pointer when doing a default copy of it// and the vtable pointer involved is the main one.// Correct answer is B::print.// g++ prints D::print, which is wrong.  Cfront gets is right.// prms-id: 2846extern "C" int printf(const char *, ...);extern "C" void exit(int);class B {public:  virtual void print(void) const { printf("B::print\n"); }};class D : public B {public:  void print(void) const { printf("D::print\n"); exit(1); }  B compute(void) const;};B D::compute(void) const{  B sub(*(B*)this);  return sub;}int main () {  D titi;  titi.compute().print();  return 0;}

⌨️ 快捷键说明

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