2、=100;intmain(){MyP(6),Q⑻;My::fun(P);Q.fun(Q);return0;運行結(jié)果A=6B=86A=8B=86Pressanykeytocontinue分析:i?i掙態(tài)數(shù)據(jù)成員屬于類,普通數(shù)據(jù)成員屬于某一對彖1.在類中不給靜態(tài)數(shù)據(jù)成員分配內(nèi)存空間;2.靜態(tài)數(shù)據(jù)成員與靜態(tài)變量一樣,是在編譯時創(chuàng)建并初始化,它在該類的任何対象被建立Z前就存在;3.靜態(tài)數(shù)據(jù)成員不能在類中進行初始化,必須在類外的其他地方為它捉供定義;一般在main()開始Z前、類的聲明Z后的特殊地帶為它提供定義和初始化;4.私冇靜態(tài)數(shù)據(jù)成員不能被類外部函
3、數(shù)訪問,也不能用對象進行訪問。2.設(shè)計一個含有靜態(tài)成員、靜態(tài)成員函數(shù)的程序,分析程序結(jié)果,理解靜態(tài)成員(函數(shù))與類和對象的關(guān)系。參考程序:#includeclassA{friendclassB;〃友元類的聲明public:voidSet(inti){x=i;)friendintadd(A&fl);//友元函數(shù)的聲明voidDisplayO{cout?,,x=,,?x?,,,y=n?y?endl;}private:intx;staticinty;};intadd(A&fl){returnfl.x+1;}classB{pub
4、lic:B(inti,intj);voidDisplayO;private:Aa;//A類的對象a作為類B的私冇成員};intA::y=1;〃靜態(tài)成員必須先賦初值B::B(inti,intj)a.x=i;A::y=j;voidB::Display(){cout?'lx=',?a.x?,y=H?A::y?endl;}voidmain(){Ab;a.Set(5);//友元函數(shù)的調(diào)用cout?add(b)?endl;b.DisplayO;Bc(6,9);//a.x=6,X::y=9;c.Display();b.DisplayO;}結(jié)果—■■-ja」
5、a問題:(l)分析友元函數(shù)add()的定義、調(diào)用與成員函數(shù)的區(qū)別。友元函數(shù)ndd()的定義:能夠訪問類A的私有成員但又不是該類成員函數(shù)的函數(shù)。友元函數(shù)通過訪問類A的私冇成員X與Y并將其值輸出,但友元函數(shù)并不是該類的成員函數(shù):而成員函數(shù)本身屬于該類的成員函數(shù),一個類的成員函數(shù)町作為另一個類的友元函數(shù)。⑵、分析友元類B的成員函數(shù)如何引用類A的私有成員的?友元函數(shù)的特點是能夠訪問類屮的私有成員的非成員函數(shù)。通過聲明一類A的友元函數(shù)friendintadd(A&fl);,就可以用這個函數(shù)白接訪問類A的私有成員了。⑶、根據(jù)運行結(jié)果分析下列程序中靜態(tài)成員B
6、值的變化和靜態(tài)成員函數(shù)的引用方式。#includcclassM{public:M(inta){A=a;B+=a;}staticvoidfl(Mm);〃靜態(tài)公有成員函數(shù)聲明private:intA;staticintB;〃靜態(tài)私有成員};intM::B=O;voidm)〃在靜態(tài)成員函數(shù)中對不同類型成員的引用方式{coutvv"A二”vvm.Avvendl;//引用類的非靜態(tài)成員,用點域法coutvv“B=”vvBvveixll;〃引用類的靜態(tài)成員,直接引用}voidmain(){MP(5),Q(10);}[Milyiuua
7、i
8、main▼
9、?灼■;=4KJM::fl(P);//調(diào)用靜態(tài)成員函數(shù)國I”E:VISUALC++6?0SP6簡體中文版COMMONMSDEV983E永杰Debug3E永杰.exe”A=5DB=15fi=10B=15■Pressanykeytocontinue1#includeclassM1.分析并調(diào)試程序,完成下列問題。#includeniostream.hH#inckidc"cmath.h"classMy{public:My(doublei=0){x=y=i;}My(doublci,doublej){x=
10、i;y=j;}My(My&m){x=m.x;y=m.y;}frienddoubledist(My&a,My&b);private:doublex,y;