10 B 類型轉(zhuǎn)換 友元函數(shù)

/*
四大類型轉(zhuǎn)換
1扩借,static_cast< int >(100.5) 靜態(tài)數(shù)據(jù)類型之間轉(zhuǎn)化
有類型指針和void* 之間轉(zhuǎn)換
無(wú)名對(duì)象支持轉(zhuǎn)換
2甚脉,const_cast 把常量轉(zhuǎn)換成變量 ,只能用一次
eg:
const date;
const_cast <>(date)
xxx_cast<類型>(數(shù)據(jù))
3卵蛉,reinterpret_cast 最危險(xiǎn)的轉(zhuǎn)換 不同類型指針之間的轉(zhuǎn)換
4闪檬,dynamic_cast 動(dòng)態(tài)類型轉(zhuǎn)換(父類子類之間的轉(zhuǎn)換)
父類向子類轉(zhuǎn)換時(shí)需要把關(guān)惜索。dynamic_cast<子類*>(父類地址)
*/

register int n;//直接將數(shù)據(jù)存在寄存器中派昧,快速的訪問(wèn)變量黔姜。低葫。但是寄存器空間有量

//========================
//========================

include <iostream>

include <string>

using namespace std;

class A{
const int date; //注意是常量
public:
A(int d=4 ): date(d){}
virtual void show() const{
cout << "date = " << date <<endl;
}

void set(int d){
const_cast<int&>(date) = d;
}

};

class B : public A
{

public :
void say()
{
cout << "welcome to Nanyang" <<endl;
}
};

int main()
{

static_cast<A>(100).show(); //======靜態(tài)轉(zhuǎn)換
A obj(200);
obj.show();
obj.set(300);
obj.show();

int n = 1;
typedef unsigned int UI; //重新進(jìn)行數(shù)據(jù)類型定義,1定義一個(gè)&類型的變量碟联,2把變量名改為想起的悲鳴& 3在左邊加typedef何恶,4這樣就給&類型起了新的別名郊霎。
typedef unsigned char UC; //搜別名用法蟹漓,沒(méi)理解 (作用:整型變量在內(nèi)存中放置方法)
UC* p = NULL;
p = reinterpret_cast<UC*>(&n);

for(int i = 0; i < 4 ; i++ )
cout << (int)*p++<<' ';
cout <<endl;//數(shù)據(jù) n = 1泛释,在計(jì)算機(jī)的位置中可能保存位置不同衫哥。圃伶。0001或者1000泻拦,不同計(jì)算機(jī)毙芜,儲(chǔ)存位置都有可能

A oa;
B ob;
B* pb = NULL;
A* pa = &oa;
pb = dynamic_cast<B*>(pa);//warning
cout <<"pb = "<<pb<<endl;
}
//====================================
//====================================
//====================================
//========友元函數(shù)==靜態(tài)成員===============
友元函數(shù):
是什么: 在類內(nèi)部用friend 聲明
怎么用:外面的函數(shù)或者另一個(gè)類,直接訪問(wèn)某個(gè)類私有成員的橋梁
靜態(tài)成員 :static members
凡是所有對(duì)象共用一份數(shù)據(jù)争拐,都需要生命靜態(tài)數(shù)據(jù)成員
所有的同一類對(duì)象腋粥,都是用一份數(shù)據(jù)
靜態(tài)數(shù)據(jù)又稱為類變量(屬于這個(gè)類,被該類全體成員共享)(像全局變量一樣架曹,在所有函數(shù)之外初始化)
class Counter{
static int cnt隘冲;
}
int Counter :: cnt;
int Counter :: cnt = 0音瓷;//靜態(tài)變量初始化
或:

include <iostream>

include <string>

using namespace std;

class A{
int date;
public:
A(int d) :date(d){}
A() :date(0){}
~A(){
cout << "~A()" << endl;
}
void show(){
cout << "DATE = " << date <<endl;
}
//friend A add(A a1, A a2); //友元函數(shù)对嚼。只要是類A成員,都可以訪問(wèn)(A類把B類當(dāng)做友元绳慎,B類不一定是A的友元纵竖,不能繼承)
friend class B;
friend A add(const A& a1,const A& a2); //凡是調(diào)用對(duì)象,且不打算復(fù)制一份值給形參杏愤∶移觯可以用引用。珊楼⊥ㄑ辏可以少調(diào)用構(gòu)造,析構(gòu)函數(shù)(用const + 引用厕宗,是不需要改變數(shù)據(jù)采用画舌,如果需要交換數(shù)據(jù)或改變數(shù)值,則不用const)
};
//=======================================友元類
class B
{
public:
void twice(A a){
a.date *= 2;//指明對(duì)象的來(lái)源 a.date
cout << a.date<<endl;
}

};
//=======================================友元函數(shù)
A add(const A& a1, const A& a2){ //定義一個(gè)A類型的函數(shù),如果沒(méi)有友元函數(shù)的聲明已慢,則不通過(guò)編譯(但是曲聂,如果函數(shù)在類內(nèi)部實(shí)現(xiàn),則可以編譯成功)
int sum = a1.date + a2.date;
return A(sum);
}

class Sb111
{
public:
string name;
static string teacher;
static int room;
Sb111(const string& n):name(n){}
void show(){
cout << "我是 " << name << "佑惠,在 " << room;
cout << "教室聽(tīng) " << teacher << "講課" <<endl;
}
static void newTeacher(const string & t)
{
teacher = t;
}
};
string Sb111 :: teacher = "劉思";
int Sb111 :: room =123;

int main(int argc, char argv[])
{
A a1=8;
A a2 =9;
add(a1,a2).show(); //a1與a2的和朋腋,返回的值也是類A

B ob;
ob.twice(20);
Sb111 s1("張三 ");
s1.show();//靜態(tài)成員
Sb111 :: newTeacher("趙二");
s1.show();
s1.newTeacher("王八");
s1.show();
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末齐疙,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子旭咽,更是在濱河造成了極大的恐慌贞奋,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件穷绵,死亡現(xiàn)場(chǎng)離奇詭異轿塔,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)请垛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門催训,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人宗收,你說(shuō)我怎么就攤上這事⊙切郑” “怎么了混稽?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)审胚。 經(jīng)常有香客問(wèn)我匈勋,道長(zhǎng),這世上最難降的妖魔是什么膳叨? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任洽洁,我火速辦了婚禮,結(jié)果婚禮上菲嘴,老公的妹妹穿的比我還像新娘饿自。我一直安慰自己,他們只是感情好龄坪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布昭雌。 她就那樣靜靜地躺著,像睡著了一般健田。 火紅的嫁衣襯著肌膚如雪烛卧。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,370評(píng)論 1 302
  • 那天妓局,我揣著相機(jī)與錄音总放,去河邊找鬼。 笑死好爬,一個(gè)胖子當(dāng)著我的面吹牛局雄,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播抵拘,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼哎榴,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼型豁!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起尚蝌,我...
    開(kāi)封第一講書(shū)人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤迎变,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后飘言,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體衣形,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年姿鸿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了谆吴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡苛预,死狀恐怖句狼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情热某,我是刑警寧澤腻菇,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站昔馋,受9級(jí)特大地震影響筹吐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜秘遏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一丘薛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧邦危,春花似錦洋侨、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至审丘,卻和暖如春吏够,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背滩报。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工锅知, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人脓钾。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓售睹,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親可训。 傳聞我的和親對(duì)象是個(gè)殘疾皇子昌妹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容