友元函数的继承性当子类继承具有友元函数的类时:子类无法继承友元函数。父类的友元函数可以访问子类的私有成员。子类的友元函数无法访问父类的私有成员。
友元函数对类的继承性影响
前言
友元函数是一种特殊的 C++ 函数,它可以在类的作用域之外访问该类的私有成员。当涉及到类的继承时,理解友元函数的行为至关重要。
友元函数与继承
当一个子类继承一个有友元函数的类时,以下规则适用:
- 子类无法继承友元函数:友元函数是与特定类相关联的。子类无法继承父类的友元函数。
- 父类的友元函数可以访问子类的私有成员:如果父类和子类相互了解(即,父类是子类的基类或子类是父类的派生类),则父类的友元函数可以访问子类的私有成员。
- 子类的友元函数无法访问父类的私有成员:相反,子类的友元函数无法访问父类的私有成员,即使父类和子类相互了解。
实战案例
考虑以下示例代码:
#include <iostream> class Base { friend void print(Base& b); // 父类友元函数 private: int x; }; class Derived : public Base { friend void <a style=\'color:#f60; text-decoration:underline;\' href="https://www.php.cn/zt/16380.html" target="_blank">access</a>(Derived& d); // 子类友元函数 private: int y; }; void print(Base& b) { std::cout << b.x << std::endl; } // 父类友元函数访问私有成员 x void access(Derived& d) { std::cout << d.x << " " << d.y << std::endl; } // 子类友元函数访问私有成员 x 和 y int main() { Base b; b.x = 10; print(b); // 输出:10 Derived d; d.x = 20; d.y = 30; access(d); // 输出:20 30 print(d); // 输出:20 }
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。