c/c++ 友元基本概念
生活随笔
收集整理的這篇文章主要介紹了
c/c++ 友元基本概念
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
友元基本概念:
1,把一個一般函數(shù)聲明為一個類的友元函數(shù)
2,把一個類A的某幾個成員函數(shù)聲明為某個類B的友元函數(shù)
3,把一個類A聲明為一個類B的友元類。
友元的作用:可以訪問類B里所有的成員變量和成員方法,不管是public,protected,還是private。
1,把一個一般函數(shù)show聲明為一個類的友元函數(shù)
#include <iostream> using namespace std;class Test{friend void show(const Test &t); public:Test(int d = 0) : data(d){} private:void fun()const{cout << "fun:" << data << endl;}int data; };//友元,即可以訪問私有成員變量,也可以訪問私有方法 void show(const Test &t){cout << "friend of Test:" << t.data << endl;t.fun(); }int main(){Test t(100);show(t);return 0; }2,把一個類A的fun成員函數(shù)聲明為類Test的友元函數(shù),但是類A的fun1函數(shù)不是類Test的友元函數(shù),所以在fun1里不能夠訪問Test的私有成員。
#include <iostream> using namespace std;class Test;class A{public:A(int d = 0) : data(d){}void fun(const Test &t);void fun1(const Test &t);private:int data; };class Test{friend void A::fun(const Test &t); public:Test(int d = 10) : data(d){} private:int data; };void A::fun(const Test &t){cout << t.data << endl; } void A::fun1(const Test &t){//編譯不能通過,因為fun1不是class Test的友元函數(shù)。 //cout << t.data <<endl; } int main(){Test t(100);A a;a.fun(t); }3,把類B聲明為一個類Test的友元類,因此,類B的所有public成員函數(shù)都是類Test的友元函數(shù)。
#include <iostream> using namespace std;class Test;class B{ public:void fun1(const Test &t);void fun2(const Test &t); };class Test{friend class B; public:Test(int d = 0) : data(d){} private:void pri()const{cout << "pri" << endl;}int data; };void B::fun1(const Test &t){cout << t.data << endl; } void B::fun2(const Test &t){t.pri(); }int main(){Test t(10);B b;b.fun1(t);b.fun2(t); }轉(zhuǎn)載于:https://www.cnblogs.com/xiaoshiwang/p/9502990.html
總結(jié)
以上是生活随笔為你收集整理的c/c++ 友元基本概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2017 实习面试问题总结(阿里、头条、
- 下一篇: mogndb 慢查询