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

C++友元函數與拷貝結構函數詳解

編輯:關於C++

C++友元函數與拷貝結構函數詳解。本站提示廣大學習愛好者:(C++友元函數與拷貝結構函數詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是C++友元函數與拷貝結構函數詳解正文


1、友元函數

1.友元函數概述:

(1)友元函數是界說在一個類外的通俗函數。
友元函數和通俗函數的界說一樣;在類內必需將該通俗函數聲明為友元。

(2)友元函數不是成員函數。
不克不及經由過程對象來挪用,而是直接挪用;友元函數可以拜訪類的私有、受掩護和公有成員,然則必需經由過程對象、對象指針或許對象援用來拜訪。

2.友元函數的聲明:

friend 前往值類型 函數名(參數表);
在類中只須要將這個聲明放置在私有部門便可。

class Point
{
double x, y;
public:
Point(){x = 0.0; y = 0.0;}
Point(double xx, double yy){x = xx; y = yy;}
friend double distance(Point, Point);//將distance函數聲明為友元函數
};
double distance(Point my1, Point my2)
{
return sqrt((my1.x-my2.x)*(my1.y-my2.y));
}

3.友元函數在界說時即通俗函數的界說,後面不加friend,在類內聲明時,必需加friend.
在友元函數失效的對象的感化規模內可以拜訪公有、私有和受掩護成員。
main函數不克不及聲明為類的友元函數,main函數只能做主調不克不及做被調。

2、拷貝結構函數:

1.拷貝結構函數概述:

(1)拷貝結構函數是一個結構函數,它屬於類的成員函數(廣泛界說為public);和類名同名然則無前往值;創立對象時,若該對象的初始化值是另外一個同類對象時(賦值不挪用)挪用。

(2)拷貝結構函數的聲明

類名::類名(類名 &對象援用名); 或另外一種聲明方法
類名::類名(const 類名 &對象援用名)
留意:拷貝結構函數只要一個參數,並且參數必需是一個對象的援用;每一個類其實都要有一個拷貝結構函數,若沒有顯式的界說,那末體系會主動界說而且設置其屬性為私有。

2.示例法式:

class Point
{
int x, y;
public:
Point(){x = 0; y = 0;}
Point(int xx, int yy){x = xx; y = yy;}
Point(Point &pf){x = pf.x; y = pf.y;}//拷貝結構函數的聲明可以省略第一個類名和::
};
Point(Point &pf)
{
*this = pf; //完成拷貝結構
}
int main()
{
Point p1; //挪用無參結構
Point p2(3, 4); //挪用結構
Point p3(p2); //挪用拷貝結構
}

留意:假如沒有應用const潤飾,那末湧現pf.x=8這類語句是正當的,然則加了const以後長短法的。別的,援用完pf也會釋放。

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