友元【C++】

友元

文章源地址:修能的博客

什么是友元(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;
};

由于有嵌套的关系,所以建议提前声明类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值