Computer >> Máy Tính >  >> Lập trình >> C ++

Kế thừa và tình bạn trong C ++

Trong C ++, tình bạn không được kế thừa. Có nghĩa là, nếu một lớp cha có một số hàm kết bạn, thì lớp con sẽ không coi chúng là bạn.

Trong ví dụ này, nó sẽ tạo ra một lỗi vì hàm display () là bạn của MyBaseClass nhưng không phải là bạn của MyDerivedClass. Display () có thể truy cập thành viên riêng của MyBaseClass.

Ví dụ

#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();
}

Đầu ra

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