锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
1銆佷緷璧栵紙Dependency錛?/strong>
渚濊禆鏄竴縐嶅緢鏈夌敤鐨勫叧緋伙紝瀹冪敤鏉ヨ〃榪頒竴涓被A“use”浜嗗彟涓涓被B銆侫鍙互鏄氳繃浠諱綍鏂瑰紡“use”綾籅錛屽錛?/p>
1錛堿鐨勬垚鍛樺嚱鏁扮殑榪斿洖鍊間負B錛?/font>
2錛堿鐨勬垚鍛樺嚱鏁頒嬌鐢˙浣滀負鍑芥暟鍙傛暟錛?/font>
3錛堿鐨勬垚鍛樺嚱鏁扮殑鍐呴儴瀹炵幇浣跨敤浜咮錛?/font>
渚濊禆鍏崇郴閫氬父浣跨敤铏氱嚎綆ご“---->”琛ㄧず錛岀澶存寚鍚戣“use”鐨勭被銆?
鍦–++浠g爜涓紝渚濊禆鍏崇郴鏄繖鏍峰搴旂殑錛?/p>
class A { public: B returns_a_B(); void has_a_B_argument(B); void has_a_B_in_its_implementation(); }; A::void has_a_B_in_its_implementation(){ B b; }
2銆佸叧鑱旓紙Association錛?/strong>
鍏寵仈鍙互琛ㄨ堪鎴愪竴涓被“鐭ラ亾”鍙︿竴涓被銆傚浣?#8220;鐭ラ亾”鍛紵鍦–++涓紝綾籄“鐭ラ亾”綾籅涓鑸槸閫氳繃鎸囬拡瀹炵幇鐨勶紙涔熷彲浠ヤ嬌鐢ㄥ紩鐢ㄦ垨鑰呭鹼級錛屽嵆綾籄鏈変竴涓垚鍛樺彉閲忔槸鎸囧悜B鐨勬寚閽堬紙鎴栬呭紩鐢ㄣ佸鹼級銆?/p>
鍏寵仈鍙互鍒嗕負鍙屽悜鍏寵仈銆佸崟鍚戝叧鑱斻佽嚜韜叧鑱斻?
1錛夊弻鍚戝叧鑱?
鍙屽悜鍏寵仈A-B錛氬弻鏂歸兘“鐭ラ亾”瀵規柟錛岄兘鍙互璋冪敤瀵規柟鐨勫叕鍏卞睘鎬у拰鏂規硶銆?
瀵瑰簲鐨凜++浠g爜涓猴細
class A { public: B* pB; }; class B { public: A* pA; };
2錛夊崟鍚戝叧鑱?
鍗曞悜鍏寵仈A->B錛氳〃紺篈“鐭ラ亾”B錛孉鍙互璋冪敤B鐨勫叕鍏卞睘鎬у拰鏂規硶銆傛病鏈夌敓鍛藉懆鏈熺殑渚濊禆銆?
瀵瑰簲鐨凜++浠g爜涓猴細
class A { public: B* pB; }; class B { };
3錛夎嚜韜叧鑱?
鑷韓鍏寵仈錛氳嚜宸卞紩鐢ㄨ嚜宸憋紝榪欎釜鍦ㄩ摼琛ㄤ腑闈炲父甯歌銆?/p>
鍙互鐪嬪埌錛屼笂闈㈢殑Object綾伙紝灝辨槸涓涓嚜韜叧鑱旂殑搴旂敤錛屽畠鏈変竴涓嚜宸辨寚鍚戣嚜宸辯殑鎸囬拡錛岀敤鏉ュ疄鐜伴摼琛ㄣ?
瀵瑰簲鐨凜++浠g爜涓猴細
class Object { public: int data; Object* next; }; class ObjectList { public: Object* first; ObjectList(); void insert(Object* obj); void print() const; };
3銆佽仛鍚堬紙Aggregation錛夊拰緇勫悎錛圕omposition錛?/strong>
鑱氬悎鍜岀粍鍚堥兘鏄敤鍦ㄨ〃榪版暣浣?閮ㄥ垎鍏崇郴鐨勬椂鍊欙紝浜岃呭彧鏄湪鐢熷懡鍛ㄦ湡闂涓婃湁宸紓銆?/p>
1錛夎仛鍚堥氬父鍙互鐞嗚В鎴?#8220;has a”鍏崇郴銆傚鏋滅被A鑱氬悎綾籅錛岄偅涔堢被A“has a”綾籅錛屽悓鏃訛紝鍦ˋ鐨勭敓鍛藉懆鏈熺粨鏉熷悗綾籅蹇呴』渚濈劧瀛樺湪鎴栬呮湁鎰忎箟銆傛瘮濡傛埧闂存湁涓寮犳瀛愶紝閭d箞鎴塊棿鍜屾瀛愮殑鍏崇郴灝辨槸鑱氬悎錛氬嵆浣挎埧闂存病鏈変簡錛岄偅寮犳瀛愯繕鏄瓨鍦ㄧ殑錛屾瀛愭槸鍙互鑴辯鎴塊棿鑰屽瓨鍦ㄧ殑銆?
瀵瑰簲鐨凜++浠g爜錛?/p>
class Table { }; class Room { public: Table aTable; };
2錛夌粍鍚堥氬父鍙互鐞嗚В涓?#8220;is a part of”銆傚拰鑱氬悎涓嶅悓鐨勬槸錛屽鏋滅被A緇勫悎綾籅錛岄偅涔堝綋A鐢熷懡鍛ㄦ湡緇撴潫鍚庯紝綾籅涔熼殢涔嬬粨鏉燂紝涔熷氨鏄B涓嶈兘鑴辯綾籄鑰屽瓨鍦ㄣ傚氨濡傚悓楦熼兘鏈変袱鍙繀鑶涓鏍鳳紝褰撻笩娑堝け浜嗭紝緲呰唨涔熼殢涔嬩笉瀛樺湪浜嗐?
瀵瑰簲鐨凜++浠g爜錛?/p>
class Wing { }; class Bird{ public: Wing leftWing; Wing rightWing; };
鍙互鍙戠幇錛屽鏋滃崟綰粠C++浠g爜鏉ョ湅錛岃仛鍚堝叧緋誨拰緇勫悎鍏崇郴娌℃湁浠涔堜笉鍚岋紝瑕佸尯鍒嗚仛鍚堝拰緇勫悎錛屽彧鑳戒粠璇箟鍒嗘瀽銆?/font>
琛ュ厖錛?/strong>
緇勫悎鍏崇郴榪樻湁鍙︿竴灞傚惈涔夛細“is a”銆備笉榪囪繖縐嶅惈涔夛紝浠呬粎鐢ㄦ潵瑙掕壊鏂歸潰錛屽嵆“is a”瑙掕壊銆傛瘮濡備竴涓漢錛屾槸涓堝か瑙掕壊銆傞偅涔熷彲浠ョ湅鍋氱粍鍚堬紱鎵嬫満鍙互鐪嬪仛“Camera”銆?#8220;Music Player”絳夈?
浠庝笂鍥炬垜浠彲浠ョ湅鍑猴紝Battery鍜孲mart Phone鏄仛鍚堝叧緋伙紝鍥犱負鐢墊睜鏄墜鏈虹殑涓閮ㄥ垎錛屼絾鏄數姹犲彲浠ヨ劚紱繪墜鏈鴻屽瓨鍦ㄣ傝孖MEI Number鍜孲mart Phone鏄粍鍚堝叧緋伙紝涓鑸儏鍐典笅涓涓猄mart Phone鍙湁涓涓狪MEI Number,鎵嬫満娑堝け鍚庯紝IMEI璺熺潃娑堝け銆傝屾垜浠煡閬撶幇鍦ㄧ殑鎵嬫満鍙互鎷嶇収銆佷笂緗戙佹挱鏀鵑煶涔愶紝鍥犳鎵嬫満鍙互鎵紨鐩告満銆亀eb鍐叉氮銆侀煶涔愭挱鏀懼櫒鐨勮鑹詫紝鎵浠mart phone鍜孋amera銆乄eb Browser銆丮usic Player鏄粍鍚堢殑鍏崇郴銆?/p>
4銆佹硾鍖栵紙Realization錛?/strong>
娉涘寲鍏崇郴涔熻甯哥敤浣滅戶鎵匡紙inherit錛夊叧緋伙紝鏄敤鏉ヨ〃榪?#8220;Is-a”榪欑鍏崇郴鐨勶紝姣斿Car鍜孭olice-Car鐨勫叧緋伙紝Police-Car “is a” Car銆?
瀵瑰簲鐨凜++浠g爜涓猴細
class Car { }; class Police_Car{ };