锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲精品无人区,久久久久久久久久码影片,国产精品成人免费视频http://m.shnenglu.com/ningfangli-blog/articles/15662.htmlningfangliningfangliSat, 25 Nov 2006 12:36:00 GMThttp://m.shnenglu.com/ningfangli-blog/articles/15662.htmlhttp://m.shnenglu.com/ningfangli-blog/comments/15662.htmlhttp://m.shnenglu.com/ningfangli-blog/articles/15662.html#Feedback0http://m.shnenglu.com/ningfangli-blog/comments/commentRss/15662.htmlhttp://m.shnenglu.com/ningfangli-blog/services/trackbacks/15662.html

C++澶氭佹妧鏈?/span>

銆婄▼搴忓憳銆?004/0 2

鎽樿

鏈枃浠嬬粛浜?span lang="EN-US">C++涓殑鍚勭澶氭佹э紝閲嶇偣闃愯堪浜嗛潰鍚戝璞$殑鍔ㄦ佸鎬佸拰鍩轟簬妯℃澘鐨勯潤鎬佸鎬侊紝騫跺垵鎺袱縐嶆妧鏈殑緇撳悎浣跨敤銆?/span>

鍏抽敭璇?/span>

鍑芥暟澶氭?span lang="EN-US">聽瀹忓鎬?鍔ㄦ佸鎬?闈欐佸鎬?/span>

瀵艱█

澶氭侊紙polymorphism錛変竴璇嶆渶鍒濇潵婧愪簬甯岃厞璇?/span> polumorphos錛屽惈涔夋槸鍏鋒湁澶氱褰㈠紡鎴栧艦鎬佺殑鎯呭艦銆傚湪紼嬪簭璁捐棰嗗煙錛屼竴涓箍娉涜鍙殑瀹氫箟鏄?/span> 涓縐嶅皢涓嶅悓鐨勭壒孌婅涓哄拰鍗曚釜娉涘寲璁板彿鐩稿叧鑱旂殑鑳藉姏鈥濄傚拰 綰補鐨勯潰鍚戝璞$▼搴忚璁¤璦涓嶅悓錛?span lang="EN-US">C++涓殑澶氭佹湁鐫鏇村箍娉涚殑鍚箟銆傞櫎浜嗗父瑙佺殑閫氳繃 綾葷戶鎵垮拰铏氬嚱鏁版満鍒剁敓鏁堜簬榪愯鏈熺殑鍔ㄦ佸鎬侊紙 dynamic polymorphism 錛夊錛屾ā鏉夸篃鍏佽灝嗕笉鍚岀殑鐗規(guī)畩琛屼負鍜屽崟涓硾鍖栬鍙風浉鍏寵仈錛岀敱浜庤繖縐嶅叧鑱斿鐞嗕簬緙栬瘧鏈熻岄潪榪愯鏈燂紝鍥犳琚О涓洪潤鎬佸鎬侊紙static polymorphism錛夈?/span>

浜嬪疄涓婏紝甯﹀彉閲忕殑瀹忓拰鍑芥暟閲嶈澆鏈哄埗涔熷厑璁稿皢涓嶅悓鐨勭壒孌婅涓哄拰鍗曚釜娉涘寲璁板彿鐩稿叧鑱斻傜劧鑰岋紝涔犳儻涓婃垜浠茍涓嶅皢瀹冧滑灞曠幇鍑烘潵鐨勮涓虹О涓哄鎬侊紙鎴栭潤鎬佸鎬侊級銆備粖澶╋紝褰撴垜浠皥鍙婂鎬佹椂錛屽鏋滄病鏈夋槑紜墍鎸囷紝榛樿灝辨槸鍔ㄦ佸鎬侊紝鑰岄潤鎬佸鎬佸垯鏄寚鍩轟簬妯℃澘鐨勫鎬併備笉榪囷紝鍦ㄨ繖綃囦互C++鍚勭澶氭佹妧鏈負涓婚鐨勬枃绔犱腑錛屾垜浠鍏堣繕鏄洖欏句竴涓婥++紺劇兢浜夎宸蹭箙鐨勫彟涓縐嶁滃鎬佲濓細鍑芥暟澶氭侊紙function polymorphism錛夛紝浠ュ強鏇翠笉甯告彁鐨勫畯澶氭侊紙macro polymorphism錛夈?/span>

鍑芥暟澶氭?/span>

涔熷氨鏄垜浠父璇寸殑鍑芥暟閲嶈澆錛?span lang="EN-US">function overloading錛夈傚熀浜庝笉鍚岀殑鍙傛暟鍒楄〃錛屽悓涓涓嚱鏁板悕瀛楀彲浠ユ寚鍚戜笉鍚岀殑鍑芥暟瀹氫箟錛?/span>

// overload_poly.cpp

#include <iostream>
#include <string>

// 瀹氫箟涓や釜閲嶈澆鍑芥暟

int my_add(int a, int b)
{
聽聽聽 return a + b;
}

int my_add(int a, std::string b)
{
聽聽聽 return a + atoi(b.c_str());
}

int main()
{
聽聽聽 int i = my_add(1, 2);聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // 涓や釜鏁存暟鐩稿姞
聽聽聽 int s = my_add(1, "2");聽聽聽聽聽聽聽聽聽聽聽聽聽 // 涓涓暣鏁板拰涓涓瓧絎︿覆鐩稿姞
聽聽聽 std::cout << "i = " << i << "\n";
聽聽聽 std::cout << "s = " << s << "\n";
}聽

鏍規(guī)嵁鍙傛暟鍒楄〃鐨勪笉鍚岋紙綾誨瀷銆佷釜鏁版垨鍏艱屾湁涔嬶級錛?span lang="EN-US">my_add(1, 2)鍜宮y_add(1, "2")琚垎鍒紪璇戜負瀵筸y_add(int, int)鍜宮y_add(int, std::string)鐨勮皟鐢ㄣ傚疄鐜板師鐞嗗湪浜庣紪璇戝櫒鏍規(guī)嵁涓嶅悓鐨勫弬鏁板垪琛ㄥ鍚屽悕鍑芥暟榪涜鍚嶅瓧閲嶆暣錛岃屽悗榪欎簺鍚屽悕鍑芥暟灝卞彉鎴愪簡褰兼涓嶅悓鐨勫嚱鏁般傛瘮鏂硅錛屼篃璁告煇涓紪璇戝櫒浼氬皢my_add()鍑芥暟鍚嶅瓧鍒嗗埆閲嶆暣涓簃y_add_int_int()鍜宮y_add_int_str()銆?/span>

瀹忓鎬?/span>

甯﹀彉閲忕殑瀹忓彲浠ュ疄鐜頒竴縐嶅垵綰у艦寮忕殑闈欐佸鎬侊細

// macro_poly.cpp

#include <iostream>
#include <string>

// 瀹氫箟娉涘寲璁板彿錛氬畯ADD
#define ADD(A, B) (A) + (B);

int main()
{
聽聽聽 int i1(1), i2(2);
聽聽聽 std::string s1("Hello, "), s2("world!");
聽聽聽 int i = ADD(i1, i2);聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // 涓や釜鏁存暟鐩稿姞
聽聽聽 std::string s = ADD(s1, s2);聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // 涓や釜瀛楃涓測滅浉鍔犫?/font>
聽聽聽 std::cout << "i = " << i << "\n";
聽聽聽 std::cout << "s = " << s << "\n";
}

褰撶▼搴忚緙栬瘧鏃訛紝琛ㄨ揪寮?span lang="EN-US">ADD(i1, i2)鍜孉DD(s1, s2)鍒嗗埆琚浛鎹負涓や釜鏁存暟鐩稿姞鍜屼袱涓瓧絎︿覆鐩稿姞鐨勫叿浣撹〃杈懼紡銆傛暣鏁扮浉鍔犱綋鐜頒負姹傚拰錛岃屽瓧絎︿覆鐩稿姞鍒欎綋鐜頒負榪炴帴銆傜▼搴忕殑杈撳嚭緇撴灉絎﹀悎鐩磋錛?/span>

1 + 2 = 3
Hello, + world! = Hello, world!

鍔ㄦ佸鎬?/span>

榪欏氨鏄紬鎵鍛ㄧ煡鐨勭殑澶氭併傜幇浠i潰鍚戝璞¤璦瀵硅繖涓蹇電殑瀹氫箟鏄竴鑷寸殑銆傚叾鎶鏈熀紜鍦ㄤ簬 緇ф壙鏈哄埗鍜岃櫄鍑芥暟銆備緥濡傦紝鎴戜滑鍙互瀹氫箟涓涓娊璞″熀綾?span lang="EN-US">Vehicle 鍜屼袱涓淳鐢熶簬Vehicle鐨勫叿浣撶被Car鍜孉irplane錛?/span>

// dynamic_poly.h

#include <iostream>

// 鍏叡鎶借薄鍩虹被Vehicle
class Vehicle
{
public:
聽聽聽 virtual void run() const = 0;
};

// 媧劇敓浜嶸ehicle鐨勫叿浣撶被Car
class Car: public Vehicle
{
public:
聽聽聽 virtual void run() const
聽聽聽 {
聽聽聽聽聽聽聽 std::cout << "run a car\n";
聽聽聽 }
};

// 媧劇敓浜嶸ehicle鐨勫叿浣撶被Airplane
class Airplane: public Vehicle
{
public:
聽聽聽 virtual void run() const
聽聽聽 {
聽聽聽聽聽聽聽 std::cout << "run a airplane\n";
聽聽聽 }
};

瀹㈡埛紼嬪簭鍙互閫氳繃鎸囧悜鍩虹被Vehicle鐨勬寚閽堬紙鎴栧紩鐢級鏉ユ搷綰靛叿浣撳璞°傞氳繃鎸囧悜鍩虹被瀵硅薄鐨勬寚閽堬紙鎴栧紩鐢級鏉ヨ皟鐢ㄤ竴涓櫄鍑芥暟錛屼細瀵艱嚧瀵硅鎸囧悜鐨勫叿浣撳璞′箣鐩稿簲鎴愬憳鐨勮皟鐢細

// dynamic_poly_1.cpp

#include <iostream>
#include <vector>
#include "dynamic_poly.h"

// 閫氳繃鎸囬拡run浠諱綍vehicle
void run_vehicle(const Vehicle* vehicle)
{
聽聽聽 vehicle->run();聽聽聽聽聽聽聽聽聽聽聽 // 鏍規(guī)嵁vehicle鐨勫叿浣撶被鍨嬭皟鐢ㄥ搴旂殑run()
}

int main()
{
聽聽聽 Car car;
聽聽聽 Airplane airplane;
聽聽聽 run_vehicle(&car);聽聽聽聽聽聽聽聽 // 璋冪敤Car::run()
聽聽聽 run_vehicle(&airplane);聽聽聽 // 璋冪敤Airplane::run()
}

姝や緥涓紝鍏抽敭鐨勫鎬佹帴鍙e厓绱犱負 铏氬嚱鏁?span lang="EN-US">run()銆傜敱浜?/span> run_vehicle()鐨勫弬鏁頒負鎸囧悜鍩虹被Vehicle鐨勬寚閽?/span> 錛屽洜鑰屾棤娉曞湪緙栬瘧鏈熷喅瀹氫嬌鐢ㄥ摢涓涓増鏈殑run()銆傚湪榪愯鏈燂紝涓轟簡鍒嗘淳鍑芥暟璋冪敤錛岃櫄鍑芥暟琚皟鐢ㄧ殑閭d釜瀵硅薄鐨勫畬鏁村姩鎬佺被鍨嬪皢琚闂傝繖鏍蜂竴鏉ワ紝瀵逛竴涓狢ar瀵硅薄璋冪敤 run_vehicle() 錛?/span> 瀹為檯涓婂皢 璋冪敤Car::run()錛岃屽浜嶢irplane瀵硅薄鑰岃█灝嗚皟鐢ˋirplane::run()銆?/span>

鎴栬鍔ㄦ佸鎬佹渶鍚稿紩浜轟箣澶勫湪浜庡鐞嗗紓璐ㄥ璞¢泦鍚堢殑鑳藉姏錛?/span>

// dynamic_poly_2.cpp

#include <iostream>
#include <vector>
#include "dynamic_poly.h"

// run寮傝川vehicles闆嗗悎
void run_vehicles(const std::vector<Vehicle*>& vehicles)
{
聽聽聽 for (unsigned int i = 0; i < vehicles.size(); ++i)
聽聽聽 {
聽聽聽聽聽聽聽 vehicles[i]->run();聽聽聽聽 // 鏍規(guī)嵁鍏蜂綋vehicle鐨勭被鍨嬭皟鐢ㄥ搴旂殑run()
聽聽聽 }
}

int main()
{
聽聽聽 Car car;
聽聽聽 Airplane airplane;
聽聽聽 std::vector<Vehicle*> v;聽聽聽 // 寮傝川vehicles闆嗗悎
聽聽聽 v.push_back(&car);
聽聽聽 v.push_back(&airplane);
聽聽聽 run_vehicles(v);聽聽聽聽聽聽聽聽聽聽聽 // run涓嶅悓綾誨瀷鐨剉ehicles
}

鍦?span lang="EN-US">run_vehicles()涓紝vehicles[i]->run() 渚濇嵁姝h榪唬鐨勫厓绱犵殑綾誨瀷鑰岃皟鐢ㄤ笉鍚岀殑鎴愬憳鍑芥暟銆傝繖浠庝竴涓晶闈綋鐜頒簡闈㈠悜瀵硅薄緙栫▼椋庢牸鐨勪紭闆呫?/span>

闈欐佸鎬?/span>

濡傛灉璇村姩鎬佸鎬佹槸閫氳繃铏氬嚱鏁版潵琛ㄨ揪鍏卞悓鎺ュ彛鐨勮瘽錛岄偅涔堥潤鎬佸鎬佸垯鏄氳繃鈥滃郊姝ゅ崟鐙畾涔変絾鏀寔鍏卞悓鎿嶄綔鐨勫叿浣撶被鈥濇潵琛ㄨ揪鍏卞悓鎬э紝鎹㈠彞璇濊錛屽繀欏誨瓨鍦ㄥ繀闇鐨勫悓鍚嶆垚鍛樺嚱鏁般?/span>

鎴戜滑鍙互閲囩敤闈欐佸鎬佹満鍒墮噸鍐欎笂涓鑺傜殑渚嬪瓙銆傝繖涓嬈★紝鎴戜滑涓嶅啀瀹氫箟vehicles綾誨眰嬈$粨鏋勶紝鐩稿弽錛屾垜浠紪鍐欏郊姝ゆ棤鍏崇殑鍏蜂綋綾籆ar鍜孉irplane錛堝畠浠兘鏈変竴涓猺un()鎴愬憳鍑芥暟錛夛細

// static_poly.h

#include <iostream>

//鍏蜂綋綾籆ar
class Car
{
public:
聽聽聽 void run() const
聽聽聽 {
聽聽聽聽聽聽聽 std::cout << "run a car\n";
聽聽聽 }
};

//鍏蜂綋綾籄irplane
class Airplane
{
public:
聽聽聽 void run() const
聽聽聽 {
聽聽聽聽聽聽聽 std::cout << "run a airplane\n";
聽聽聽 }
};

run_vehicle()搴旂敤紼嬪簭琚敼鍐欏涓嬶細聽

// static_poly_1.cpp

#include <iostream>
#include <vector>
#include "static_poly.h"

// 閫氳繃寮曠敤鑰宺un浠諱綍vehicle
template <typename Vehicle>
void run_vehicle(const Vehicle& vehicle)
{
聽聽聽 vehicle.run();聽聽聽聽聽聽聽聽聽聽聽 // 鏍規(guī)嵁vehicle鐨勫叿浣撶被鍨嬭皟鐢ㄥ搴旂殑run()
}

int main()
{
聽聽聽 Car car;
聽聽聽 Airplane airplane;
聽聽聽 run_vehicle(car);聽聽聽聽聽聽聽聽 // 璋冪敤Car::run()
聽聽聽 run_vehicle(airplane);聽聽聽 // 璋冪敤Airplane::run()
}聽

鐜板湪 Vehicle鐢ㄤ綔 妯℃澘鍙傛暟鑰岄潪鍏叡鍩虹被瀵硅薄錛堜簨瀹炰笂錛岃繖閲岀殑 Vehicle鍙槸涓涓鍚堢洿瑙夌殑璁板彿鑰屽凡錛屾澶栧埆鏃犲畠鎰?/span> 錛夈傜粡榪囩紪璇戝櫒澶勭悊鍚庯紝鎴戜滑鏈緇堜細寰楀埌 run_vehicle <Car>() 鍜? run_vehicle <Airplane>()涓や釜涓嶅悓鐨勫嚱鏁?/span> 銆?/span> 榪欏拰鍔ㄦ佸鎬佷笉鍚岋紝鍔ㄦ佸鎬?/span> 鍑熻櫄鍑芥暟鍒嗘淳鏈哄埗 鍦ㄨ繍琛屾湡鍙湁涓涓?/span> run_vehicle ()鍑芥暟銆?/span>

鎴戜滑鏃犳硶鍐嶉忔槑鍦板鐞嗗紓璐ㄥ璞¢泦鍚堜簡錛屽洜涓烘墍鏈夌被鍨嬮兘蹇呴』鍦ㄧ紪璇戞湡浜堜互鍐沖畾銆備笉榪囷紝涓轟笉鍚岀殑vehicles寮曞叆涓嶅悓鐨勯泦鍚堝彧鏄婦鎵嬩箣鍔熾傜敱浜庢棤闇鍐嶅皢闆嗗悎鍏冪礌灞闄愪簬鎸囬拡鎴栧紩鐢紝鎴戜滑鐜板湪鍙互浠庢墽琛屾ц兘鍜岀被鍨嬪畨鍏ㄤ袱鏂歸潰鑾峰緱濂藉錛?/span>

// static_poly_2.cpp

#include <iostream>
#include <vector>
#include "static_poly.h"

// run鍚岃川vehicles闆嗗悎
template <typename Vehicle>
void run_vehicles(const std::vector<Vehicle>& vehicles)
{
聽聽聽 for (unsigned int i = 0; i < vehicles.size(); ++i)聽
聽聽聽 {
聽聽聽聽聽聽聽 vehicles[i].run(); 聽聽聽聽聽聽聽聽聽聽 // 鏍規(guī)嵁vehicle鐨勫叿浣撶被鍨嬭皟鐢ㄧ浉搴旂殑run()
聽聽聽 }
}

int main()
{
聽聽聽 Car car1, car2;
聽聽聽 Airplane airplane1, airplane2;

聽聽聽 std::vector<Car> vc;聽聽聽聽聽聽聽聽聽聽聽聽聽 // 鍚岃川cars闆嗗悎
聽聽聽 vc.push_back(car1);
聽聽聽 vc.push_back(car2);
聽聽聽 //vc.push_back(airplane1);聽聽聽聽聽聽聽 // 閿欒錛氱被鍨嬩笉鍖歸厤
聽聽聽 run_vehicles(vc);聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // run cars

聽聽聽 std::vector<Airplane> vs;聽聽聽聽聽聽聽聽 // 鍚岃川airplanes闆嗗悎
聽聽聽 vs.push_back(airplane1);
聽聽聽 vs.push_back(airplane2);
聽聽聽 //vs.push_back(car1);聽聽聽聽聽聽聽聽聽聽聽聽 // 閿欒錛氱被鍨嬩笉鍖歸厤
聽聽聽 run_vehicles(vs);聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // run airplanes
}

涓ょ澶氭佹満鍒剁殑緇撳悎浣跨敤

鍦ㄤ竴浜涢珮綰?span lang="EN-US">C++搴旂敤涓紝鎴戜滑鍙兘闇瑕佺粨鍚堜嬌鐢ㄥ姩鎬佸鎬佸拰闈欐佸鎬佷袱縐嶆満鍒訛紝浠ユ湡杈懼埌瀵硅薄鎿嶄綔鐨勪紭闆呫佸畨鍏ㄥ拰楂樻晥銆備緥濡傦紝鎴戜滑鏃㈠笇鏈涗竴鑷磋屼紭闆呭湴澶勭悊vehicles鐨剅un闂錛屽張甯屾湜鈥滃畨鍏ㄨ岄珮鏁堚濆湴瀹屾垚緇欓琛屽櫒錛堥鏈恒侀鑹囩瓑錛夎繘琛屸滅┖涓姞娌光濊繖鏍風殑楂橀毦搴﹀姩浣溿備負姝わ紝鎴戜滑棣栧厛灝嗕笂闈㈢殑vehicles綾誨眰嬈$粨鏋勬敼鍐欏涓嬶細

// dscombine_poly.h

#include <iostream>
#include <vector>

// 鍏叡鎶借薄鍩虹被Vehicle
class Vehicle
{
聽聽聽 public:
聽聽聽 virtual void run() const = 0;
};

// 媧劇敓浜嶸ehicle鐨勫叿浣撶被Car
class Car: public Vehicle
{
public:
聽聽聽 virtual void run() const
聽聽聽 {
聽聽聽聽聽聽聽 std::cout << "run a car\n";
聽聽聽 }
};

// 媧劇敓浜嶸ehicle鐨勫叿浣撶被Airplane
class Airplane: public Vehicle
{
public:
聽聽聽 virtual void run() const
聽聽聽 {
聽聽聽聽聽聽聽 std::cout << "run a airplane\n";
聽聽聽 }

聽聽聽 void add_oil() const
聽聽聽 {
聽聽聽聽聽聽聽 std::cout << "add oil to airplane\n";
聽聽聽 }
};

// 媧劇敓浜嶸ehicle鐨勫叿浣撶被Airship
class Airship: public Vehicle
{
public:
聽聽聽 virtual void run() const
聽聽聽 {
聽聽聽聽聽聽聽 std::cout << "run a airship\n";
聽聽聽 }
聽聽

聽聽聽 void add_oil() const
聽聽聽 {
聽聽聽聽聽聽聽 std::cout << "add oil to airship\n";
聽聽聽 }
};

鎴戜滑鐞嗘兂涓殑搴旂敤紼嬪簭鍙互緙栧啓濡備笅錛?/span>

// dscombine_poly.cpp

#include <iostream>
#include <vector>
#include "dscombine_poly.h"

// run寮傝川vehicles闆嗗悎
void run_vehicles(const std::vector<Vehicle*>& vehicles)
{
聽聽聽 for (unsigned int i = 0; i < vehicles.size(); ++i)
聽聽聽 {
聽聽聽聽聽聽聽 vehicles[i]->run();聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // 鏍規(guī)嵁鍏蜂綋鐨剉ehicle綾誨瀷璋冪敤瀵瑰簲鐨剅un()
聽聽聽 }
}

// 涓烘煇縐嶇壒瀹氱殑aircrafts鍚岃川瀵硅薄闆嗗悎榪涜鈥滅┖涓姞娌光?/font>
template <typename Aircraft>
void add_oil_to_aircrafts_in_the_sky(const std::vector<Aircraft>& aircrafts)
{
聽聽聽 for (unsigned int i = 0; i < aircrafts.size(); ++i)
聽聽聽 {
聽聽聽聽聽聽聽 aircrafts[i].add_oil();
聽聽聽 }
}

int main()
{
聽聽聽 Car car1, car2;
聽聽聽 Airplane airplane1, airplane2;

聽聽聽 Airship airship1, airship2;
聽聽聽 std::vector<Vehicle*> v;聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // 寮傝川vehicles闆嗗悎
聽聽聽 v.push_back(&car1);
聽聽聽 v.push_back(&airplane1);
聽聽聽 v.push_back(&airship1);
聽聽聽 run_vehicles(v);聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // run涓嶅悓縐嶇被鐨剉ehicles

聽聽聽 std::vector<Airplane> vp;聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // 鍚岃川airplanes闆嗗悎
聽聽聽 vp.push_back(airplane1);
聽聽聽 vp.push_back(airplane2);
聽聽聽 add_oil_to_aircrafts_in_the_sky(vp); 聽聽 // 涓篴irplanes榪涜鈥滅┖涓姞娌光?/font>

聽聽聽 std::vector<Airship> vs;聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 // 鍚岃川airships闆嗗悎
聽聽聽 vs.push_back(airship1);
聽聽聽 vs.push_back(airship2);
聽聽聽 add_oil_to_aircrafts_in_the_sky(vs);聽聽聽 // 涓篴irships榪涜鈥滅┖涓姞娌光?/font>
}聽

鎴戜滑淇濈暀浜嗙被灞傛緇撴瀯錛岀洰鐨勬槸涓轟簡鑳?/span> 澶熷埄鐢?/span> run_vehicles()涓鑷磋屼紭闆呭湴澶勭悊 寮傝川瀵硅薄闆嗗悎 vehicles鐨剅un闂銆傚悓鏃訛紝鍒╃敤鍑芥暟妯℃澘add_oil_to_aircrafts_in_the_sky<Aircraft>()錛屾垜浠粛鐒跺彲浠ュ鐞嗙壒瀹氱綾葷殑vehicles 鈥?aircrafts錛堝寘鎷琣irplanes鍜宎irships錛夌殑鈥滅┖涓姞娌光濋棶棰樸傚叾涓紝鎴戜滑閬垮紑浣跨敤鎸囬拡錛屼粠鑰屽湪 鎵ц鎬ц兘鍜岀被鍨嬪畨鍏ㄤ袱鏂歸潰杈懼埌浜嗛鏈熺洰鏍囥?/span>

緇撹

闀挎湡浠ユ潵錛?span lang="EN-US">C++紺劇兢瀵逛簬澶氭佺殑鍐呮兜鍜屽寤朵竴鐩翠簤璁轟笉浼戙傚湪comp.object榪欐牱鐨勭綉緇滆鍧涗笂錛屾綾昏瘽棰樹簤璁鴻嚦浠婁粛闅忓鍙銆傛浘緇忔湁浜哄皢鍔ㄦ佸鎬佺О涓篿nclusion polymorphism錛岃屽皢闈欐佸鎬佺О涓簆arametric polymorphism鎴杙arameterized polymorphism銆?/span>

鎴戞敞鎰忓埌2003騫存柉鍧︾澶у鍏紑鐨勪竴浠?/span>銆奀++ and Object-Oriented Programming銆嬫暀妗堜腑鏄庣‘鎻愬埌浜嗗嚱鏁板鎬佹蹇?鈥?鈥淔unction overloading is also referred to as function polymorphism as it involves one function having many forms鈥濄傛枃鍚庣殑鈥滃弬鑰冩枃鐚濆崟鍏冪粰鍑轟簡榪欎釜緗戦〉閾炬帴銆?/span>

鍙兘浣犳槸絎竴嬈$湅鍒板畯澶氭?span lang="EN-US">榪欎釜鏈銆備笉蹇呰寮傦紝涔熻鎴戝氨鏄犲嚭榪欎釜鏈鐨勨滅涓浜衡濄傛樉鐒訛紝甯﹀彉閲忕殑瀹忥紙鎴栫被浼間簬鍑芥暟鐨勫畯鎴栦吉鍑芥暟瀹忥級鐨勬浛鎹㈡満鍒墮櫎浜嗗厤闄ゅ皬鍨嬪嚱鏁扮殑璋冪敤寮閿涔嬪錛屼篃琛ㄧ幇鍑轟簡綾諱技鐨勫鎬佹с傚湪鎴戜滑涓婇潰鐨勪緥瀛愪腑錛屽瓧絎︿覆鐩稿姞鎵琛ㄧ幇鍑烘潵鐨勭鍚堢洿瑙夌殑榪炴帴鎿嶄綔錛屼簨瀹炰笂鏄敱搴曢儴榪愮畻絎﹂噸杞芥満鍒舵敮鎸佺殑銆傚煎緱鎸囧嚭鐨勬槸錛孋++紺劇兢涓湁浜哄皢榪愮畻絎﹂噸杞芥墍琛ㄧ幇鍑烘潵鐨勫鎬佺О涓篴d hoc polymorphism銆?/span>

David Vandevoorde鍜孨icolai M. Josuttis鍦ㄤ粬浠殑钁椾綔銆奀++ Templates: The Complete Guide銆嬩竴涔︿腑緋葷粺鍦伴槓榪頒簡闈欐佸鎬佸拰鍔ㄦ佸鎬佹妧鏈傚洜涓鴻涓衡?/span>鍜屽叾浠栬璦鏈哄埗鍏崇郴涓嶅ぇ鈥濓紝榪欐湰涔︽病鏈夋彁鍙婂畯澶氭侊紙浠ュ強鍑芥暟澶氭侊級銆傦紙闇瑕佽鏄庣殑鏄紝絎旇呮湰浜烘槸榪欐湰涔︾殑綣佷綋涓枃鐗堣瘧鑰呬箣涓錛屾湰鏂囨鏄熀浜庤繖鏈功鐨勭14绔犫淭he Polymorphic Power of Templates鈥濆啓浣滆屾垚錛?/span>

鍔ㄦ佸鎬佸彧闇瑕佷竴涓鎬佸嚱鏁幫紝鐢熸垚鐨勫彲鎵ц浠g爜灝哄杈冨皬錛岄潤鎬佸鎬佸繀欏婚拡瀵逛笉鍚岀殑綾誨瀷浜х敓涓嶅悓鐨勬ā鏉垮疄浣擄紝灝哄浼氬ぇ涓浜涳紝浣嗙敓鎴愮殑浠g爜浼氭洿蹇紝鍥犱負鏃犻渶閫氳繃鎸囬拡榪涜闂存帴鎿嶄綔銆傞潤鎬佸鎬佹瘮鍔ㄦ佸鎬佹洿鍔犵被鍨嬪畨鍏紝鍥犱負鍏ㄩ儴緇戝畾閮借媯鏌ヤ簬緙栬瘧鏈熴傛濡傚墠闈緥瀛愭墍紺猴紝浣犱笉鍙皢涓涓敊璇殑綾誨瀷鐨勫璞℃彃鍏ュ埌浠庝竴涓ā鏉垮疄渚嬪寲鑰屾潵鐨勫鍣ㄤ箣涓傛澶栵紝姝e浣犲凡緇忕湅鍒扮殑閭f牱錛屽姩鎬佸鎬佸彲浠ヤ紭闆呭湴澶勭悊寮傝川瀵硅薄闆嗗悎錛岃岄潤鎬佸鎬佸彲浠ョ敤鏉ュ疄鐜板畨鍏ㄣ侀珮鏁堢殑鍚岃川瀵硅薄闆嗗悎鎿嶄綔銆?/span>

闈欐佸鎬佷負C++甯︽潵浜嗘硾鍨嬬紪紼嬶紙generic programming錛夌殑姒傚康銆傛硾鍨嬬紪紼嬪彲浠ヨ涓烘槸鈥滅粍浠跺姛鑳藉熀浜庢鏋舵暣浣撹岃璁♀濈殑妯℃澘緙栫▼銆係TL灝辨槸娉涘瀷緙栫▼鐨勪竴涓吀鑼冦係TL鏄竴涓鏋訛紝瀹冩彁渚涗簡澶ч噺鐨勭畻娉曘佸鍣ㄥ拰榪唬鍣紝鍏ㄩ儴浠ユā鏉挎妧鏈疄鐜般備粠鐞嗚涓婅錛孲TL鐨勫姛鑳藉綋鐒跺彲浠ヤ嬌鐢ㄥ姩鎬佸鎬佹潵瀹炵幇錛屼笉榪囪繖鏍蜂竴鏉ュ叾鎬ц兘蹇呭皢澶ф墦鎶樻墸銆?/span>

闈欐佸鎬佽繕涓篊++紺劇兢甯︽潵浜嗘硾鍨嬫ā寮忥紙generic patterns錛夌殑姒傚康銆傜悊璁轟笂錛屾瘡涓涓渶瑕侀氳繃铏氬嚱鏁板拰綾葷戶鎵胯屾敮鎸佺殑璁捐妯″紡閮藉彲浠ュ埄鐢ㄥ熀浜庢ā鏉跨殑闈欐佸鎬佹妧鏈紙鐢氳嚦鍙互緇撳悎浣跨敤鍔ㄦ佸鎬佸拰闈欐佸鎬佷袱縐嶆妧鏈級鑰屽疄鐜般傛濡備綘鐪嬪埌鐨勯偅鏍鳳紝Andrei Alexandrescu鐨勫ぉ鎵嶄綔鍝併奙odern C++ Design: Generic Programming and Design Patterns Applied銆嬶紙Addison-Wesley錛夊拰Loki紼嬪簭搴?/span> 宸茬粡璧板湪浜嗘垜浠殑鍓嶉潰銆?/span>

鍙傝冩枃鐚?/span>

1. David Vandevoorde, Nicolai M. Josuttis, C++ Templates: The Complete Guide, Addison Wesley, 2002.

2. Chris Neumann, CS193d (Summer 2003) C++ and Object-Oriented Programming, http://www.stanford.edu/class/cs193d/, 2003.

鑽h
200 3 騫?span lang="EN-US">10鏈?br />鍗椾含甯堣寖澶у
www.royaloo.com



ningfangli 2006-11-25 20:36 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产老妈| 亚洲国产精品热久久| 亚洲欧美综合网| 日韩一级不卡| 欧美国产丝袜视频| 久久久久久久91| 午夜精品久久久99热福利| 欧美一级视频免费在线观看| 亚洲乱码久久| 久久久久久9| 欧美一区二区三区精品 | 欧美人交a欧美精品| 欧美伦理影院| 欧美激情精品久久久久久蜜臀| 免费不卡在线观看av| 乱中年女人伦av一区二区| 欧美黄色大片网站| 欧美精品福利| 欧美日韩精品一区二区在线播放 | 一区二区三区日韩欧美| 亚洲欧美国产精品专区久久| 在线亚洲电影| 午夜精品久久久久久久白皮肤| 亚洲网站在线看| 亚洲国产日韩欧美在线图片| 亚洲午夜精品久久久久久浪潮| 在线亚洲一区观看| 亚洲欧美卡通另类91av| 久久国产欧美| 欧美一区二区福利在线| 久久亚裔精品欧美| 欧美激情一级片一区二区| 欧美视频精品在线| 国产亚洲激情| 99这里只有精品| 一区二区三区 在线观看视| 亚洲一区二区三区四区视频| 久久久久久穴| 久久蜜臀精品av| 亚洲精品五月天| 欧美一区二区日韩一区二区| 你懂的网址国产 欧美| 欧美色中文字幕| 亚洲电影成人| 亚洲欧美三级伦理| 免费不卡在线观看av| 亚洲免费av电影| 久久av在线| 国产精品入口夜色视频大尺度 | 久久综合九色综合欧美狠狠| 激情欧美丁香| 欧美精品一区二| 伊人久久久大香线蕉综合直播| 国产精品99久久久久久久vr| 久久岛国电影| 久久深夜福利免费观看| 欧美日韩午夜剧场| 精品成人久久| 久久久av水蜜桃| 亚洲午夜精品一区二区| 欧美先锋影音| 亚洲视频在线观看网站| 亚洲国内欧美| 免费欧美日韩| 亚洲韩国青草视频| 欧美成人在线免费观看| 久久―日本道色综合久久| 欧美a级大片| 亚洲精品视频在线观看网站| 欧美国产一区二区| 欧美第一黄色网| 亚洲精品色图| 亚洲美女区一区| 国产精品久久久久久影院8一贰佰| 国产精品综合| 久久精品欧洲| 久久人人爽人人爽爽久久| 亚洲激情第一区| 亚洲经典三级| 欧美日韩国产综合久久| 亚洲午夜一区| 午夜欧美视频| 国模精品一区二区三区| 久久久青草青青国产亚洲免观| 久久久www成人免费精品| 亚洲国产精品黑人久久久 | 91久久精品美女| 最新高清无码专区| 欧美日韩在线播放一区| 亚洲综合色婷婷| 欧美亚洲免费在线| 亚洲国产精品成人久久综合一区| 亚洲国产高清视频| 欧美午夜精品久久久久久人妖| 欧美一级播放| 久久欧美肥婆一二区| 一区二区激情视频| 午夜激情综合网| 亚洲国产精品成人一区二区 | 国产麻豆91精品| 免费在线观看精品| 欧美日韩色一区| 久久久久久一区二区| 欧美精品v日韩精品v国产精品| 亚洲午夜精品网| 久久久福利视频| 一区二区久久久久久| 小黄鸭精品aⅴ导航网站入口| 欧美日韩免费一区二区三区| 新片速递亚洲合集欧美合集| 在线播放中文一区| 欧美大片在线观看一区二区| 免费成人高清在线视频| 亚洲欧美日韩一区在线| 久久www成人_看片免费不卡| 亚洲免费精品| 亚洲高清网站| 国产一区二区精品| 一本色道久久综合精品竹菊 | 国产一区二区中文| 日韩网站在线看片你懂的| 国模叶桐国产精品一区| 亚洲精品一区二区三区樱花 | 亚洲激情电影中文字幕| 欧美一级视频| 亚洲女优在线| 欧美精品日韩www.p站| 免费一区二区三区| 国产一区二区成人久久免费影院| 亚洲美女啪啪| 99天天综合性| 久久激情久久| 久久精品1区| 国产欧美日韩免费| 亚洲一区二三| 亚洲欧美日韩中文播放| 欧美视频免费在线观看| 99视频在线观看一区三区| 亚洲精品一区二区三区福利| 免费在线欧美黄色| 欧美顶级艳妇交换群宴| 精品二区久久| 久久久不卡网国产精品一区| 久久九九电影| 黄色欧美日韩| 久久久美女艺术照精彩视频福利播放| 欧美影院精品一区| 国产视频丨精品|在线观看| 欧美一级片久久久久久久| 一区二区三区国产精华| 亚洲免费视频观看| 欧美在线一区二区| 国产自产高清不卡| 久久久久久久久久码影片| 麻豆精品在线视频| **性色生活片久久毛片| 欧美成人免费观看| 亚洲人成77777在线观看网| 亚洲精品小视频| 欧美午夜不卡影院在线观看完整版免费| 日韩一级黄色av| 性色一区二区三区| 精品av久久久久电影| av成人免费| 欧美一区二区三区另类| 国产一区二区三区高清| 欧美sm极限捆绑bd| 一区二区三区视频在线| 欧美一区二区三区婷婷月色 | 久久看片网站| 狠狠色2019综合网| 欧美风情在线观看| 夜夜嗨av一区二区三区免费区| 午夜国产精品视频| 激情伊人五月天久久综合| 欧美成人亚洲成人| 在线视频日韩| 欧美+日本+国产+在线a∨观看| 这里只有精品丝袜| 黑人极品videos精品欧美裸| 欧美电影免费观看| 亚洲欧美日韩另类精品一区二区三区| 久久婷婷人人澡人人喊人人爽| 日韩视频在线观看国产| 国产视频欧美| 欧美日韩国产一区二区| 亚洲欧美在线磁力| 欧美黄色aaaa| 亚洲国产成人av| 一区二区三区视频在线| 国产欧美一区二区精品婷婷 | 国产一区二区三区不卡在线观看| 男女激情视频一区| 亚洲女同同性videoxma| 亚洲精品国偷自产在线99热| 久久久久久黄| 亚洲婷婷免费| 麻豆成人91精品二区三区| 亚洲私人黄色宅男| 亚洲欧洲一区二区三区久久|