Fork me on GitHub

c++ 友元类 友元类方法

一、友元类
#pragma once
#include"Tv.h"
class Remote
{
public:
void chanDown(Tv& tv);
};
#pragma once
class Tv
{
public:
friend class Remote;
void chandown();
Tv(int maxChannel=10);
private:

int channel;
int maxChan;
};
Remote作为Tv的友元类,就需要告知在Tv类的声明中告知Tv,我的朋友Remote能访问我的所有成员方法、变量,
所以要在Tv类里这样声明:friend class Remote;
二:友元方法
class AirConditioner;
class AirRemote {
public:
void set_c(AirConditioner& ac, int c);
};
class AirConditioner {
private:
int c;
friend void AirRemote::set_c(AirConditioner& ac, int c1);
public:
AirConditioner(int c1 = 26);
};
有时后我们只想把私有变量暴露给某个类的某个方法能访问,比如 只让(AirConditioner)空调遥控器的设置温度的方法(set_c) 能访问 空调(AirConditioner)的私有变量 c,
就要向上面这样声明。
先前向声明:AirConditioner,然后声明AirRemote最后在声明AirConditioner。这个顺序是不能变的。
#include"FriendClassMethod.h"
#include<iostream>

AirConditioner::AirConditioner(int c1) {
this->c = c1;
}
void AirRemote::set_c(AirConditioner& ac, int c1) {
ac.c = c1;
std::cout << "空调设置为: " << ac.c << "摄氏度\n";
}
三.互为友元
如果两个类某些方法互相都要访问对方成员,这个时候,可以声明为友元函数,不是某个它们之间的某个类的成员函数,就普通的友元函数就可以了。参数记得上带上这两个类的引用就可以了。或者互相声明为对方的友元类。
posted @ 2022-08-21 17:19  HelloLLLLL  阅读(57)  评论(0编辑  收藏  举报