visibility7.c

来自「this is a gcc file, you can download it 」· C语言 代码 · 共 74 行

C
74
字号
// Build don't link: // GROUPS passed visibility// visibility file// From: Gordon Joly <G.Joly@cs.ucl.ac.uk>// Date:     Wed, 21 Apr 93 09:42:07 +0100// Subject:  /*** BUG REPORT : THE MYTH OF PRIVATE INHERITANCE ***/// Message-ID: <9304210842.AA01815@life.ai.mit.edu>#include <iostream>class A { private:  int number; public:  A(int i) : number(i)    {}  virtual ~A()    {}  virtual void Number(int c)    { number = c; } // ERROR - private  virtual int Number()    { return number; } // ERROR - private};class B : private A { private:  int second_number; public:  B(int c, int i) : second_number(c), A(i)    {}  virtual ~B()    {}  virtual void firstNumber(int b)  // renames member function Number(int) of class A    { A::Number(b); }  virtual int firstNumber()  // renames member function Number() of class A    { return A::Number(); }};class C { private:  B* bobject; public:  C(B* bp) : bobject(bp)    {}  virtual ~C()    {}  //  // the following two functions access  // private member functions of class B  // and they should not be able to do so  //  virtual void setBValue(int i)     { if (bobject) bobject->Number(i); }// ERROR - .*  virtual int getBValue()    { if (bobject) { return bobject->Number(); } return 0; }// ERROR - .*};int main(){  B* bobject = new B(2, 1);  C* cobject = new C(bobject);  cobject->setBValue(8);  std::cout << cobject->getBValue() << std::endl;  delete bobject;  delete cobject;}

⌨️ 快捷键说明

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