C++ 中的繼承和友誼


在 C++ 中,友誼不可繼承。這意味著,如果一個父類有一些友元函式,則子類將無法獲得這些函式作為友元。

在此示例中,它將生成一個錯誤,因為 display() 函式是 MyBaseClass 的友元,但不是 MyDerivedClass 的友元。 display() 可以訪問 MyBaseClass 的私有成員。

示例

#include <iostream>
using namespace std;
class MyBaseClass {
   protected:
      int x;
   public:
      MyBaseClass() {
         x = 20;
      }
      friend void display();
};
class MyDerivedClass : public MyBaseClass {
   private:
      int y;
   public:
      MyDerivedClass() {
         x = 40;
      }
};
void display() {
   MyDerivedClass derived;
   cout << "The value of private member of Base class is: " << derived.x << endl;
   cout << "The value of private member of Derived class is: " << derived.y << endl;
}
main() {
   display();
}

輸出

[Error] 'int MyDerivedClass::y' is private
[Error] within this context

更新時間: 30-7-2019

超過 2 千次瀏覽量

開啟你的職業生涯

完成課程認證

開始
廣告