#include <cstring>
#include <iostream>
using namespace std;
/* 類的主要特點是信息隱藏與封裝,友元函數是爲了實現在類的外部訪
問類的私人成員(或保護成員),是一扇通向私人(保護)成員的後
門,使得普通函數也可以訪問封裝在某一類的信息。
*/
class Girl; ///提前聲明Girl類
class Boy{
public:
Boy(string x, int y, int z):age(z){
name=x, id=y;
}
void prit(Girl &);
friend void outp(Boy &); ///Boy的友元函數,是外部函數
void prit_age();
~Boy(){}
private:
string name;
int id;
const int age; ///常類型:程序運行期間的常類型數據不能改變
};
class Girl{///補充定義Girl類
public:
Girl(string x, int y){
name=x, id=y;
}
friend void Boy::prit(Girl &); ///Girl的友元函數,同時是Boy的成員函數
~Girl(){}
private:
string name;
int id;
};
void outp(Boy &x){ ///外部函數:不屬於任何一個類
Girl g1("Suffy", 456);
cout<<"The boy's id:"<<x.id<<endl; //通過外部函數調用Boy類
cout<<"The boy's name:"<<x.name<<endl<<"Over02\n\n";
x.prit(g1); //通過外部函數調用Boy類中Girl的友元函數來調用Girl的私人成員
}
void Boy::prit(Girl &x){
cout<<"Boy's id: "<<id<<endl;
cout<<"Boy's name: "<<name<<endl;
cout<<"Girl's id: "<<x.id<<endl;
cout<<"Girl's name: "<<x.name<<endl<<"Over01\n"<<endl;
}
void Boy::prit_age(){
cout<<name<<"'s age is: "<<age<<endl;
}
void fuction01(){ ///友元
Boy b1("Moffy", 123, 18);
Girl g1("Vicky", 321);
b1.prit(g1);
outp(b1);
}
void fuction02(){ ///常類型
Boy b1("Lucky", 234, 18);
b1.prit_age();
}
int main(){
///fuction01();
fuction02();
return 0;
}
讀幾個小程序瞭解c++:Part 02(友元、常類型)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.