c 系列六 友元函式和友元類

2021-10-09 19:41:17 字數 2472 閱讀 7258

本期主題:

友元類和友元函式

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開始,它只能出現在類定義的內部,友...