亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++ 類(lèi)的友元機(jī)制解讀

 更新時(shí)間:2021年02月20日 16:51:00   作者:流星斬月  
這篇文章主要介紹了C++ 類(lèi)的友元機(jī)制的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用c++,感興趣的朋友可以了解下

  下面給出C++類(lèi)的友元機(jī)制說(shuō)明(對(duì)類(lèi)private、protected成員訪問(wèn)),需要注意的是,友元機(jī)制盡量不用或者少用,雖然它會(huì)提供某種程度的效率,但會(huì)帶來(lái)數(shù)據(jù)安全性的問(wèn)題。

類(lèi)的友元

  友元是C++提供的一種破壞數(shù)據(jù)封裝和數(shù)據(jù)隱藏的機(jī)制。

  通過(guò)將一個(gè)模塊聲明為另一個(gè)模塊的友元,一個(gè)模塊能夠引用到另一個(gè)模塊中本是被隱藏的信息??梢允褂糜言瘮?shù)和友元類(lèi)。

  為了確保數(shù)據(jù)的完整性,及數(shù)據(jù)封裝與隱藏的原則,建議盡量不使用或少使用友元。

友元函數(shù)

  友元函數(shù)是在類(lèi)聲明中由關(guān)鍵字friend修飾說(shuō)明的非成員函數(shù),在它的函數(shù)體中能夠通過(guò)對(duì)象名訪問(wèn) private 和protected成員

  作用:增加靈活性,使程序員可以在封裝和快速性方面做合理選擇。

  訪問(wèn)對(duì)象中的成員必須通過(guò)對(duì)象名。

舉例說(shuō)明:使用友元函數(shù)計(jì)算兩點(diǎn)間的距離

#include <iostream>

#include <cmath>

using namespace std;

class Point
{//Point類(lèi)聲明

  public: //外部接口

    Point(int x=0, int y=0) : x(x), y(y) { }

    int getX() { return x; }

    int getY() { return y; }

    friend float dist(Point &a, Point &b);

  private: //私有數(shù)據(jù)成員

    int x, y;

};

float dist( Point& a, Point& b)
{
  double x = a.x - b.x;

  double y = a.y - b.y;

  return static_cast<float>(sqrt(x * x + y * y));

}

int main()
{

  Point p1(1, 1), p2(4, 5);

  cout <<"The distance is: ";

  cout << dist(p1, p2) << endl;

  return 0;

}

友元類(lèi)

  若一個(gè)類(lèi)為另一個(gè)類(lèi)的友元,則此類(lèi)的所有成員都能訪問(wèn)對(duì)方類(lèi)的私有成員。

  聲明語(yǔ)法:將友元類(lèi)名在另一個(gè)類(lèi)中使用friend修飾說(shuō)明。

類(lèi)的友元關(guān)系是單向的

  如果聲明B類(lèi)是A類(lèi)的友元,B類(lèi)的成員函數(shù)就可以訪問(wèn)A類(lèi)的私有和保護(hù)數(shù)據(jù),但A類(lèi)的成員函數(shù)卻不能訪問(wèn)B類(lèi)的私有、保護(hù)數(shù)據(jù)。

以上就是C++ 類(lèi)的友元機(jī)制解讀的詳細(xì)內(nèi)容,更多關(guān)于C++ 類(lèi)的友元機(jī)制的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論