C++學習總結(十二)——友元函數,友元類

一.友元函數

用於訪問私有數據和私有函數。

#include<iostream>
#include<windows.h>
class myclass {

private:
	int num=0;

	void go()
	{
		system("notepad");
	}
	void friend showdata(myclass *m)
	{
		m->go();
		std::cout << m->num << std::endl;
	}
};
 //void showdata(myclass *m){};
void main1()
{
	myclass mm;
                showdata(&mm); 
	//myclass *mm=new myclass;
	//showdata(mm);	 傳遞地址

	std::cin.get();
}
二.友元類

1.如果F是A的友元類,則F類中的所有成員函數都是A類的友元函數。

2.友元類通常作爲對數據操作或類間傳遞消息的輔助類。

3.友元類不適用於繼承。

#include<iostream>
class myclass
{
private:
	int my;
	void setmy(int num)
	{
		this->my = num;
	}
	friend class yourclass;	//yourclass是myclass的友元類

};

class yourclass
{

private:
	int your;
	myclass *yourc;
public:
	yourclass()
	{
		this->your = 0;
		this->yourc = new myclass;
	}
	void setmy(int num)
	{
		yourc->my=num;//訪問友元類的私有數據成員
		std::cout << yourc->my<<std::endl;
		yourc->setmy(10000);
		std::cout << yourc->my << std::endl;
	}
};

//yourclass是myclass的友元類,則your中的所有成員函數都是my的友元函數
void main()
{
	myclass my1;
	yourclass your1;
	//my1::setmy(1);私有無法訪問
	your1.setmy(100);

	std::cin.get();
}




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章