c++中可不可以在一个类中访问另一个类的私有成员?
c++中可以在一个类中访问另一个类的私有成员,通过定义友元类即可实现。
class node
{
public:
node(int data = 0) :mdata(data), mpnext(NULL){}
private:
int mdata;
node *mpnext;
friend class link;
};
友元类本质:
C++提高破坏数据封装和隐藏的一种机制,将一个类A声明为另一个类B的友元类,这样B就可以使用A的私有数据。
一般,为了保证数据的完整性,以及数据的封装和隐藏原则,建议不用友元。
友元类的特点:友元是单一的,不能传递
扩展资料
友元(frend)机制允许一个类将对其非公有成员的访问权授予指定的函数或者类,友元的声明以friend开始,它只能出现在类定义的内部,友元声明可以出现在类中的任何地方。
友元不是授予友元关系的那个类的成员,所以它们不受其声明出现部分的访问控制影响。通常,将友元声明成组地放在类定义的开始或结尾是个好主意。
使用友元类优点:
1、可以灵活地实现需要访问若干类的私有或受保护的成员才能完成的任务;
2、便于与其他不支持类概念的语言(如C语言、汇编等)进行混合编程;
3、通过使用友元函数重载可以更自然地使用C++语言的IO流库。
参考资料来源:百度百科—友元类