1. 程式人生 > >犯的迷糊1(C++ friend友元 & 建構函式)

犯的迷糊1(C++ friend友元 & 建構函式)

  今天算是犯糊塗了,在初始化一個類物件時,我竟然認為是簡單的直接賦值。如下例子中的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