ใน 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