1.關鍵字friend只出現在類定義的內部(這點與const不同)
2.友元是授予友元關係的那個類的成員
3.定義類b為類a的友元,b可以訪問a的私有成員
[cpp]view plain
copy
print?
例1:/*要注意友元的使用順序,宣告b->定義a->定義b*/
class b;/*只宣告而未定義的類稱為不完全類,可用定義型別,不能用於定義物件*/
class a
friend b;/*將b宣告為友元,b可以訪問a的private*/
};
class b
int get()
};
int main()
例1:/*要注意友元的使用順序,宣告b->定義a->定義b*/
class b;/*只宣告而未定義的類稱為不完全類,可用定義型別,不能用於定義物件*/
class a
friend b;/*將b宣告為友元,b可以訪問a的private*/
};
class b
int get()
};
int main()
};
class a
friend
void b::test(a a);/*將b的test()宣告為友元,b的test()可以訪問a的private*/
};
void b::test(a a)
int main()
例2:/*要注意友元的使用順序,
宣告a->定義b(要作為友元的那個函式只宣告不定義)->定義a->定義b的函式*/
class a;/*只宣告而未定義的類稱為不完全類,可用定義型別,不能用於定義物件*/
class b
};class a
friend void b::test(a a);/*將b的test()宣告為友元,b的test()可以訪問a的private*/
};void b::test(a a)
int main()
; class c
};
class a;
void f()
int main()
/*本來a和f()的作用域只限於在它們宣告之後。
但是因為類b提前引入了它們,使得它們的作用域與類b的作用域相同*/
class b
;class c
};class a;
void f()
};
class a
friend
void b::test(a a);/*將b的test()宣告為友元,b的test()可以訪問a的private*/
friend
void b::test(a a1, a a2);
};
//正確,因為已經被定義為友元
void b::test(a a)
//正確,因為已經被定義為友元
void b::test(a a1, a a2)
//錯誤,不能因為test(a a)是友元,就認為它的過載也是友元
void b::test(a a1, a a2, a a3)
class a;/*只宣告而未定義的類稱為不完全類,可用定義型別,不能用於定義物件*/
class b
};class a
friend void b::test(a a);/*將b的test()宣告為友元,b的test()可以訪問a的private*/
friend void b::test(a a1, a a2);
};//正確,因為已經被定義為友元
void b::test(a a)
//正確,因為已經被定義為友元
void b::test(a a1, a a2)
//錯誤,不能因為test(a a)是友元,就認為它的過載也是友元
void b::test(a a1, a a2, a a3)
友元函式 friend
類的外部,也就是通過例項來訪問私有 private 或保護 protected 成員,這是被禁止的。但從實用性來說,的確有時很需要在外部訪問,c 增加了一種稱之為 友元 friend 函式的申明,將 特權 賦給一些函式 可以是全域性函式,也可以是其它類的成員函式 使之能夠訪問該類的私有和保護成員。友...
友元函式 friend
一 乙個類的成員函式有三個互不相干作用 1.可以通過類的成員方法,訪問它的私有資料。2.該函式的作用域在類中。3.在外部調動該函式必須通過成員訪問符訪問,也就是必須經由乙個物件去啟用 有乙個this指標 二 友元函式 1.友元函式作用域不屬於類的作用域,不是類的成員,也就不是類的方法,不受公有 私有...
friend 友元函式友元類
這篇是引用,具體是引用哪位的博主不查了 僅供自己回顧複習用 friend 型別 函式名 形式引數 友元函式的宣告可以放在類的私有部分,也可以放在公有部分,它們是沒有區別的,都說明是該類的乙個友元函式。乙個函式可以是多個類的友元函式,只需要在各個類中分別宣告。友元函式的呼叫與一般函式的呼叫方式和原理一...