犯的迷糊1(C++ friend友元 & 建構函式)
阿新 • • 發佈:2018-11-25
今天算是犯糊塗了,在初始化一個類物件時,我竟然認為是簡單的直接賦值。如下例子中的A():btest(this),a(88)
,這個地方當時認為是直接將A物件this指標賦值給btest物件(當時不知道怎麼了,btest也不是指標型別啊)。後來以為是A類繼承了B類,但是也不是啊。又過了一段時間突然明白了,唉!!!!!。還有隻要定義了類物件就會呼叫建構函式,不管是new的還是直接定義的(唉,這是怎麼了)。
在C++中我們可以將函式定義成類的友元函式,這樣在函式中就可以訪問類的私有成員。與函式相同,類也可以作為另一個類的友元類,在友元類中可以訪問另外一個類的所有成員。
#include<iostream>
using namespace std;
class A;
class B{
public:
int b;
B(A* a){
cout<<"this is B"<<endl;
}
};
class A{
friend class B;
public:
A():btest(this),a(88)
{
cout<<"this is A" <<endl;
}
public:
int a;
B btest;
};
int main(){
B b(NULL);
A *a1 = new A();
return 0;
}
輸出結果:
[email protected]:~/share$ ./a.out
this is B
this is B
this is A