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";
}
三.互爲友元
如果兩個類某些方法互相都要訪問對方成員,這個時候,可以聲明爲友元函數,不是某個它們之間的某個類的成員函數,就普通的友元函數就可以了。參數記得上帶上這兩個類的引用就可以了。或者互相聲明爲對方的友元類。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章