程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++之友元函數和友元類

C++之友元函數和友元類

編輯:C++入門知識

C++之友元函數和友元類


在介紹類和對象時,已經說過類具有封裝性,類中的私有成員一般只有通過該類中的成員函數才可以訪問,而程序中的其他函數時無法直接訪問類中的私有成員的。如果在一定的條件下需要訪問類的私有成員,就必須通過對象來調用類的成員函數,但是頻繁的調用會非常的繁瑣,也會降低程序的運行效率。為了解決這個問題,有了友元函數這個幫手,但是引進它,也破壞了類的封裝性和隱藏性,使得非成員函數可以訪問類的私有成員,一般不建議使用友元函數。

友元函數

友元函數的特點:

1,說明在類體內,說明時,在函數的類型說明符前加關鍵字friend。

2,定義在類體外時,定義格式和一般的普通函數相同,為:<類型說明符> <函數名> ( <參數表> )

3,友元函數時非成員函數,在調用上與普通函數相同。

4,友元函數可以直接訪問類中的私有成員。

舉例編程求兩個double型數的點之間的距離:

#include //頭文件命令
#include //數學庫函數包含文件
class Point
{
public:
	Point(double i,double j)//定義的帶兩個參數的構造函數
	{
		x=i;
		y=j;
	}
	void Getxy()//一般的成員函數
	{
		cout<<"("<

程序的分析:

1,通過調用構造函數來對類的對象進行初始化,使得兩個對象的參數得到數值。

2,通過對象調用成員函數來輸出坐標。

3,通過調用友元函數來輸出兩個點之間的距離。

\

友元類

友元類是把一個類當成另一個類的友元。當一個類作為另一個類的友元時,友元類中的所有成員函數都是另一個類的友元函數。

友元函數定義格式:friend class <類名>

舉例編程實現友元類的使用

#include //頭文件包含命令
class A//定義的類A
{
public:
	friend class B;//定義的友元類B
	void Set(int i) { x=i; }//一般的成員函數
	void Display()
	{
		cout<<"x="<漏洞。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved