Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.old-deja/g++.mike/p5571.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
// { dg-do run } // prms-id: 5571 int e = 0; void *vp = 0; class ParentOne { public: ParentOne() {} #ifdef MAKE_WORK virtual ~ParentOne() {} #endif private: char SomeData[101]; }; class ParentTwo { public: ParentTwo() {} virtual ~ParentTwo() {} private: int MoreData[12]; virtual int foo() { return 0; } }; struct Child : public ParentOne, public ParentTwo { int ChildsToy; virtual void PrintThis() = 0; }; struct Student : public Child { int StudentsBook; void PrintThis() { if (vp == 0) vp = (void *)this; else { if (vp != (void *)this) ++e; } } void LocalPrintThis() { if (vp == 0) vp = (void *)this; else { if (vp != (void *)this) ++e; } PrintThis(); } void ForcedPrintThis() { if (vp == 0) vp = (void *)this; else { if (vp != (void *)this) ++e; } Student::PrintThis(); } }; int main() { Student o; o.LocalPrintThis(); o.ForcedPrintThis(); Child* pX = &o; pX->PrintThis(); return e; }