本期主題:
友元類和友元函式
1.4 友元函式總結
2.友元類
class
person
;person
(string name,
int age);}
;person::
person
(string name,
int age)
void
get_info
(person& p)
//person的引用
intmain
(void
)gary@ubuntu:
~/workspaces/cpp_study/
4.1.
friend$ make
main.cpp: in function 『void
get_info
(person&
)』:main.cpp:10:
9: error: 『int person::age』 is private
int age;
^main.cpp:28:
33: error: within this context
cout <<
"info age is "
<< p.age << endl;
^makefile:
2: recipe for target 'all' failed
make:**
*[all] error 1
直接在外部函式get_info中訪問物件的私有成員變數會報錯,此時可將外部函式作為友元函式來操作;
在類定義時,將外部函式用friend來標識為這個類的友元函式
class
person
;person
(string name,
int age)
;friend
void
get_info
(person&);
//在類定義時,新增這句友元函式的標識};
gary@ubuntu:
~/workspaces/cpp_study/
4.1.
friend$ .
info name is jason
info age is 10
friend func();
class
person
;//class類的前置宣告,為啥這裡需要前置宣告?因為get_info中要用到person的相關資訊,這裡不展開前置宣告,因為我們的重點是友元函式
class
test
;class
person
;person
(string name,
int age)
;friend
void test::
get_info
(person&);
//友元函式是test類中的get_info函式};
void test::
get_info
(person& p)
gary@ubuntu:
~/workspaces/cpp_study/
4.1.
friend$ .
test info name is jason
test info age is 10
前面介紹了友元函式的用法,並且我們舉了幾個實際的例子,現在我們總結一下友元函式的一些特性:
舉例:使用乙個友元類,這個類中包含兩個函式,這兩個函式都能去訪問另乙個類中的私有成員
class
person
;//class類的前置宣告
class
test
;class
person
;person
(string name,
int age)
;// friend void test::get_info(person&);
// friend void test::get_info2(person&); //若沒有定義友元類,則這兩個友元函式需要單獨用friend來進行宣告
friend
class
test
;//可將該類直接宣告為友元類,這樣裡面的成員函式都是友元函式};
intmain
(void
)gary@ubuntu:
~/workspaces/cpp_study/
4.1.
friend$ .
test::get_info name is jason
test::get_info2 age is 10
友元 友元函式 友元類和友元成員函式 C
有些情況下,允許特定的非成員函式訪問乙個類的私有成員,同時仍阻止一般的訪問,這是很方便做到的。例如被過載的操作符,如輸入或輸出操作符,經常需要訪問類的私有資料成員。友元 frend 機制允許乙個類將對其非公有成員的訪問權授予指定的函式或者類,友元的宣告以friend開始,它只能出現在類定義的內部,友...
友元 友元函式 友元類和友元成員函式 C
有些情況下,允許特定的非成員函式訪問乙個類的私有成員,同時仍阻止一般的訪問,這是很方便做到的。例如被過載的操作符,如輸入或輸出操作符,經常需要訪問類的私有資料成員。友元 frend 機制允許乙個類將對其非公有成員的訪問權授予指定的函式或者類,友元的宣告以friend開始,它只能出現在類定義的內部,友...
C 友元 友元函式 友元類和友元成員函式
有些情況下,允許特定的非成員函式訪問乙個類的私有成員,同時仍阻止一般的訪問,這是很方便做到的。例如被過載的操作符,如輸入或輸出操作符,經常需要訪問類的私有資料成員。友元 frend 機制允許乙個類將對其非公有成員的訪問權授予指定的函式或者類,友元的宣告以friend開始,它只能出現在類定義的內部,友...