欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++友元函數(shù)與拷貝構(gòu)造函數(shù)詳解

 更新時(shí)間:2014年07月15日 12:20:34   投稿:shichen2014  
這篇文章主要介紹了C++友元函數(shù)與拷貝構(gòu)造函數(shù),需要的朋友可以參考下

一、友元函數(shù)

1.友元函數(shù)概述:

(1)友元函數(shù)是定義在一個(gè)類外的普通函數(shù)。
友元函數(shù)和普通函數(shù)的定義一樣;在類內(nèi)必須將該普通函數(shù)聲明為友元。

(2)友元函數(shù)不是成員函數(shù)。
不能通過(guò)對(duì)象來(lái)調(diào)用,而是直接調(diào)用;友元函數(shù)可以訪問(wèn)類的公有、受保護(hù)以及私有成員,但是必須通過(guò)對(duì)象、對(duì)象指針或者對(duì)象引用來(lái)訪問(wèn)。

2.友元函數(shù)的聲明:

friend 返回值類型 函數(shù)名(參數(shù)表);
在類中只需要將這個(gè)聲明放置在公有部分即可。

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函數(shù)聲明為友元函數(shù)
};
double distance(Point my1, Point my2)
{
return sqrt((my1.x-my2.x)*(my1.y-my2.y));
}

3.友元函數(shù)在定義時(shí)即普通函數(shù)的定義,前面不加friend,在類內(nèi)聲明時(shí),必須加friend.
在友元函數(shù)生效的對(duì)象的作用范圍內(nèi)可以訪問(wèn)私有、公有以及受保護(hù)成員。
main函數(shù)不能聲明為類的友元函數(shù),main函數(shù)只能做主調(diào)不能做被調(diào)。

二、拷貝構(gòu)造函數(shù):

1.拷貝構(gòu)造函數(shù)概述:

(1)拷貝構(gòu)造函數(shù)是一個(gè)構(gòu)造函數(shù),它屬于類的成員函數(shù)(普遍定義為public);和類名同名但是無(wú)返回值;創(chuàng)建對(duì)象時(shí),若該對(duì)象的初始化值是另一個(gè)同類對(duì)象時(shí)(賦值不調(diào)用)調(diào)用。

(2)拷貝構(gòu)造函數(shù)的聲明

類名::類名(類名 &對(duì)象引用名); 或另一種聲明方式
類名::類名(const 類名 &對(duì)象引用名)
注意:拷貝構(gòu)造函數(shù)只有一個(gè)參數(shù),而且參數(shù)必須是一個(gè)對(duì)象的引用;每個(gè)類其實(shí)都要有一個(gè)拷貝構(gòu)造函數(shù),若沒(méi)有顯式的定義,那么系統(tǒng)會(huì)自動(dòng)定義并且設(shè)置其屬性為公有。

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;}//拷貝構(gòu)造函數(shù)的聲明可以省略第一個(gè)類名和::
};
Point(Point &pf)
{
*this = pf; //完成拷貝構(gòu)造
}
int main()
{
Point p1; //調(diào)用無(wú)參構(gòu)造
Point p2(3, 4); //調(diào)用構(gòu)造
Point p3(p2); //調(diào)用拷貝構(gòu)造
}

注意:如果沒(méi)有使用const修飾,那么出現(xiàn)pf.x=8這種語(yǔ)句是合法的,但是加了const之后是非法的。另外,引用完pf也會(huì)釋放。

相關(guān)文章

  • Cmake中強(qiáng)大的輸出函數(shù)message示例解析

    Cmake中強(qiáng)大的輸出函數(shù)message示例解析

    這篇文章主要介紹了Cmake中強(qiáng)大的輸出函數(shù)message解析,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05
  • C++依賴倒轉(zhuǎn)原則和里氏代換原則有什么好處

    C++依賴倒轉(zhuǎn)原則和里氏代換原則有什么好處

    設(shè)計(jì)模式(Design pattern)代表了最佳的實(shí)踐,通常被有經(jīng)驗(yàn)的面向?qū)ο蟮能浖_(kāi)發(fā)人員所采用。設(shè)計(jì)模式是軟件開(kāi)發(fā)人員在軟件開(kāi)發(fā)過(guò)程中面臨的一般問(wèn)題的解決方案。本篇介紹設(shè)計(jì)模式七大原則之一的依賴倒轉(zhuǎn)原則
    2023-02-02
  • C++并查集親戚(Relations)算法實(shí)例

    C++并查集親戚(Relations)算法實(shí)例

    這篇文章主要介紹了C++并查集親戚(Relations)算法,實(shí)例分析了并查集親戚算法的原理與實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • C語(yǔ)言之詳解靜態(tài)變量static

    C語(yǔ)言之詳解靜態(tài)變量static

    在C語(yǔ)言中static是用來(lái)修飾變量和函數(shù)的,這篇文章詳細(xì)介紹了static主要作用,文章中有詳細(xì)的代碼實(shí)例,需要的朋友可以參考閱讀
    2023-04-04
  • 深入理解C語(yǔ)言指針

    深入理解C語(yǔ)言指針

    關(guān)于指針,其是C語(yǔ)言的重點(diǎn),C語(yǔ)言學(xué)的好壞,其實(shí)就是指針學(xué)的好壞。其實(shí)指針并不復(fù)雜,學(xué)習(xí)指針,要正確的理解指針
    2020-02-02
  • QT實(shí)現(xiàn)用戶登錄注冊(cè)

    QT實(shí)現(xiàn)用戶登錄注冊(cè)

    這篇文章主要為大家詳細(xì)介紹了QT實(shí)現(xiàn)用戶登錄注冊(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C++中引用處理的基本方法

    C++中引用處理的基本方法

    引用不是新定義了一個(gè)變量,而是給已經(jīng)存在的變量取了一個(gè)別名,編譯器不會(huì)為引用變量開(kāi)辟內(nèi)存空間,他和他引用的變量共用一塊內(nèi)存空間,下面這篇文章主要給大家介紹了關(guān)于C++中引用處理的基本方法,需要的朋友可以參考下
    2022-12-12
  • 《C++ primer plus》讀書(shū)筆記(一)

    《C++ primer plus》讀書(shū)筆記(一)

    本讀書(shū)筆記是C++ primer plus(第六版)前3章的學(xué)習(xí)筆記。非常的淺顯易懂,復(fù)習(xí)C++基礎(chǔ)知識(shí)的可以瞄瞄。
    2014-10-10
  • 解析c語(yǔ)言中"函數(shù)調(diào)用中缺少哨兵"的情況分析

    解析c語(yǔ)言中"函數(shù)調(diào)用中缺少哨兵"的情況分析

    本篇文章是對(duì)c語(yǔ)言中"函數(shù)調(diào)用中缺少哨兵"的情況進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 淺談C++中的構(gòu)造函數(shù)分類及調(diào)用規(guī)則

    淺談C++中的構(gòu)造函數(shù)分類及調(diào)用規(guī)則

    這篇文章主要介紹了C++中的構(gòu)造函數(shù)分類及調(diào)用規(guī)則,文中根據(jù)參數(shù)寫(xiě)出了幾種不同類型的構(gòu)造函數(shù)并解釋了如何調(diào)用,需要的朋友可以參考下
    2016-03-03

最新評(píng)論