程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 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,通過調用友元函數來輸出兩個點之間的距離。

\

<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+ICAgICAgICAgICDT0dSqwOA8L3A+CjxwPiAgICAgICDT0dSqwODKx7DR0ru49sDgtbGzycHt0ru49sDgtcTT0dSqoaO1sdK7uPbA4Nf3zqrB7dK7uPbA4LXE09HUqsqxo6zT0dSqwODW0LXEy/nT0LPJ1LG6r8r9trzKx8Ht0ru49sDgtcTT0dSquq/K/aGjPC9wPgo8cD4gICAgICAg09HUqrqvyv22qNLlJiMyNjY4NDvKvaO6ZnJpZW5kICBjbGFzcyAgPMDgw/s+PC9wPgo8cD4gICAgICAgvtnA/bHgs8zKtc/W09HUqsDgtcTKudPDPC9wPgo8cHJlIGNsYXNzPQ=="brush:java;">#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