成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

友元函數(shù)的聲明和定義 友元函數(shù)應當在類的private中還是public中聲明?

友元函數(shù)應當在類的private中還是public中聲明?首先,友元是一種定義在類外部的普通函數(shù)或類,但它需要在類體內進行說明,為了與該類的成員函數(shù)加以區(qū)別,在說明時前面加以關鍵字friend。友元不

友元函數(shù)應當在類的private中還是public中聲明?

首先,友元是一種定義在類外部的普通函數(shù)或類,但它需要在類體內進行說明,為了與該類的成員函數(shù)加以區(qū)別,在說明時前面加以關鍵字friend。

友元不是成員函數(shù),但是它可以訪問類中的私有成員。所以,友元聲明只能出現(xiàn)在類定義中。因為友元不是授權類的成員,所以它不受其所在類的聲明區(qū)域public private 和protected 的影響。

構造函數(shù)聲明成友元時,不能同時定義嗎?

friend double REALSET::REALSET(INTSET &s)//自動成為inline函數(shù)

{

...

}

這段代碼不對,有兩個問題。首先,你不能在INTSET類中定義REALSET的成員函數(shù),注意是不能定義,不是不能聲明; 其次構造函數(shù)不能有返回值,把那個double去掉。

更改成這樣:

class INTSET{

...

friend REALSET::REALSET(INTSET &s) //只保留聲明

...

}//end of class INTSET

//REALSET構造函數(shù)移植INTSET之后。

//注意在此函數(shù)中使用了INTSET類的成員,所以必須定義在INTSET類之后。

REALSET::REALSET(INTSET &s)

{

...

}

友元函數(shù)為什么不直接定義為類的成員函數(shù)呢,他倆感覺沒什么區(qū)別呀?

那就不要用友元函數(shù)。本來就有人認為完全不該用友元函數(shù)




使用運算符重載,有的時候不適合直接聲明為成員函數(shù)。


class point {

private:

int x

int y

public:

point(int x,int y)

}


std::ostream& operator<<(std::ostream& os, const point& p)

//重載流輸出運算符,運算符的左操作數(shù)必須是 std::ostream& 類型,不能直接聲明為成員函數(shù)

//流輸出函數(shù)必須訪問point類的數(shù)據(jù)成員(包括private數(shù)據(jù)成員)

//典型實現(xiàn)是 return os << p.x << " " << p.y

不過這也有別的解決方法,不是把 operator<< 聲明為友元函數(shù),而是使用一個成員函數(shù)(類似于訪問者模式)


class point {

private:

int x

int y

public:

point(int x,int y)

std::ostream& print_by(std::ostream& os)//成員函數(shù)print_by定義實際的輸出方式

}


//重載流輸出運算符,運算符的左操作數(shù)必須是 std::ostream& 類型,不能直接聲明為成員函數(shù)

//不需要作為友元函數(shù)

std::ostream& operator<<(std::ostream& os, const point& p){

return p.print_by(os) //調用成員函數(shù) print_by

}

C 如何將一個類的成員函數(shù)申明為另一個類的友元函數(shù)?

可以在類A中把類B的一個成員函數(shù)聲明為自己的友元函數(shù)。 class A { void F() } #include "A.h" class B { friend void A::F() }

友元函數(shù)是否能訪問當前類中對象成員的私有成員?

1、友元函數(shù)是可以直接訪問類的私有成員的非成員函數(shù)。它是定義在類外的普通函數(shù),它不屬于任何類,但需要在類的定義中加以聲明,聲明時只需在友元的名稱前加上關鍵字friend。

2、友元函數(shù)可以訪問類的靜態(tài)成員、私有成員和公有成員。

3、友元的作用在于提高程序的運行效率(即減少了類型檢查和安全性檢查等都需要的時間開銷),但是,它破壞了類的封裝性和隱藏性,使得非成員函數(shù)可以訪問類的私有成員。