友元
文章源地址:修能的博客
什么是友元(Friend)
友元(Friend)
是C++中的一种特殊关系,它允许某个类或函数访问另一个类的私有成员。通过将一个类或函数声明为另一个类的友元,就可以在友元类或函数中直接访问该类的私有成员。
友元关系是一种单向的关系,不具有传递性。
友元的实现
全局函数做友元
只要将全局函数用friend
关键字声明在类中即可。
class TestClass{
friend void getData(TestClass* Cpoint);
private:
int data;
public:
TestClass(int value) : data(value) {};
};
void getData(TestClass* Cpoint) {cout << Cpoint->data << endl;}
int main()
{
TestClass tc(10);
getData(&tc);
return 0;
}
类做友元
将类用friend
关键字声明在类中时,友元中的函数可以访问私有成员。
class TestClass{
friend void getData(TestClass* Cpoint);
friend class FriendClass;
private:
int data;
public:
TestClass(int value) : data(value) {};
};
class FriendClass{
public:
TestClass* Cpoint;
FriendClass(TestClss* cpoint) : Cpoint(cpoint) {cout << Cpoint->data << endl;};
};
成员函数做友元
只要像之前定义全局函数做友元时一样将函数声明在类中,但是这时要加上函数所在的域:friend functype classname::funcname(params)
#pragma once
#include <iostream>
class TestClass;
class FriendClass {
public:
TestClass* point;
FriendClass();
void visit();
};
class TestClass {
friend void FriendClass::visit();
private:
int data_private;
public:
int data_public;
TestClass(int value);
TestClass() = default;
};
由于有嵌套的关系,所以建议提前声明类。