閱讀103 返回首頁    go 阿裏雲 go 技術社區[雲棲]


C++ 鍐呰仈inline-鍗氬-浜戞爾紺懼尯-闃塊噷浜?

鍘熸枃閾炬帴锛?a target="_blank" href="https://www.cnblogs.com/berry/articles/1582702.html">https://www.cnblogs.com/berry/articles/1582702.html

inline鍑芥暟锛堟憳鑷狢++ Primer鐨勭涓夌増锛?/span>

鍦ㄥ嚱鏁板0鏄庢垨瀹氫箟涓嚱鏁拌繑鍥炵被鍨嬪墠鍔犱笂鍏抽敭瀛梚nline鍗蟲妸鍑芥暟鎸囧畾涓哄唴鑱斻€?/span>

聽聽聽聽聽 inline int min(int first, int secend) {/****/};

聽聽聽聽聽 inline 鍑芥暟瀵圭紪璿戝櫒鑰岃█蹇呴』鏄彲瑙佺殑锛屼互渚垮畠鑳藉鍦ㄨ皟鐢ㄧ偣鍐呭睍寮€璿ュ嚱鏁般€備笌闈瀒nline鍑芥暟涓嶅悓鐨勬槸锛宨nline鍑芥暟蹇呴』鍦ㄨ皟鐢ㄨ鍑芥暟鐨勬瘡涓枃鏈枃浠朵腑瀹氫箟銆傚綋鐒訛紝瀵逛簬鍚屼竴紼嬪簭鐨勪笉鍚屾枃浠訛紝濡傛灉inline鍑芥暟鍑虹幇鐨勮瘽锛屽叾瀹氫箟蹇呴』鐩稿悓銆傚浜庣敱涓や釜鏂囦歡compute.C鍜宒raw.C鏋勬垚鐨勭▼搴忔潵璿達紝紼嬪簭鍛樹笉鑳藉畾涔夎繖鏍風殑min()鍑芥暟锛屽畠鍦╟ompute.C涓寚涓€浠朵簨鎯咃紝鑰屽湪draw.C涓寚鍙﹀涓€浠朵簨鎯呫€傚鏋滀袱涓畾涔変笉鐩稿悓锛岀▼搴忓皢浼氭湁鏈畾涔夌殑琛屼負銆?/span>

聽聽聽聽聽 涓轟繚璿佷笉浼氬彂鐢熻繖鏍風殑浜嬫儏锛屽緩璁妸inline鍑芥暟鐨勫畾涔夋斁鍒板ご鏂囦歡涓€傚湪姣忎釜璋冪敤璿nline鍑芥暟鐨勬枃浠朵腑鍖呭惈璿ュご鏂囦歡銆傝繖縐嶆柟娉曚繚璿佸姣忎釜inline鍑芥暟鍙湁涓€涓畾涔夛紝涓旂▼搴忓憳鏃犻渶澶嶅埗浠g爜锛屽苟涓斾笉鍙兘鍦ㄧ▼搴忕殑鐢熷懡鏈熶腑寮曡搗鏃犳剰鐨勪笉鍖歸厤鐨勪簨鎯呫€?/span>

鍐呰仈鍑芥暟鐨勭紪紼嬮鏍?鎽樿嚜楂樿川閲廋++/C 緙栫▼鎸囧崡)

鍏抽敭瀛梚nline 蹇呴』涓庡嚱鏁板畾涔変綋鏀懼湪涓€璧鋒墠鑳戒嬌鍑芥暟鎴愪負鍐呰仈锛屼粎灝唅nline 鏀懼湪鍑芥暟澹版槑鍓嶉潰涓嶈搗浠諱綍浣滅敤銆?/span>

濡備笅椋庢牸鐨勫嚱鏁癋oo 涓嶈兘鎴愪負鍐呰仈鍑芥暟锛?/span>

inline void Foo(int x, int y); // inline 浠呬笌鍑芥暟澹版槑鏀懼湪涓€璧?
void Foo(int x, int y){}

鑰屽涓嬮鏍肩殑鍑芥暟Foo 鍒欐垚涓哄唴鑱斿嚱鏁幫細

inline void Foo(int x, int y) 

{}

鎵€浠ヨ锛?span >inline 鏄竴縐嶁€滅敤浜庡疄鐜扮殑鍏抽敭瀛椻€濓紝鑰屼笉鏄竴縐嶁€滅敤浜庡0鏄庣殑鍏抽敭瀛椻€?/span>銆備竴鑸湴锛岀敤鎴峰彲浠ラ槄璿誨嚱鏁扮殑澹版槑锛屼絾鏄湅涓嶅埌鍑芥暟鐨勫畾涔夈€傚敖綆″湪澶у鏁版暀縐戜功涓唴鑱斿嚱鏁扮殑澹版槑銆佸畾涔変綋鍓嶉潰閮藉姞浜唅nline 鍏抽敭瀛楋紝浣嗘垜璁や負inline 涓嶅簲璿ュ嚭鐜板湪鍑芥暟鐨勫0鏄庝腑銆傝繖涓粏鑺傝櫧鐒朵笉浼氬獎鍝嶅嚱鏁扮殑鍔熻兘锛屼絾鏄綋鐜頒簡楂樿川閲廋++/C 紼嬪簭璁捐椋庢牸鐨勪竴涓熀鏈師鍒欙細澹版槑涓庡畾涔変笉鍙販涓轟竴璋堬紝鐢ㄦ埛娌℃湁蹇呰銆佷篃涓嶅簲璿ョ煡閬撳嚱鏁版槸鍚﹂渶瑕佸唴鑱斻€?/span>

瀹氫箟鍦ㄧ被澹版槑涔嬩腑鐨勬垚鍛樺嚱鏁板皢鑷姩鍦版垚涓哄唴鑱斿嚱鏁?/strong>

渚嬪

class A
{
    public:void Foo(int x, int y) {  } // 鑷姩鍦版垚涓哄唴鑱斿嚱鏁?}

灝嗘垚鍛樺嚱鏁扮殑瀹氫箟浣撴斁鍦ㄧ被澹版槑涔嬩腑鉶界劧鑳藉甫鏉ヤ功鍐欎笂鐨勬柟渚匡紝浣嗕笉鏄竴縐嶈壇濂界殑緙栫▼椋庢牸锛屼笂渚嬪簲璿ユ敼鎴愶細

// 澶存枃浠?class A
{
    public:
    void Foo(int x, int y);
}
// 瀹氫箟鏂囦歡
inline void A::Foo(int x, int y){} 

鎱庣敤鍐呰仈

鍐呰仈鑳芥彁楂樺嚱鏁扮殑鎵ц鏁堢巼锛屼負浠€涔堜笉鎶婃墍鏈夌殑鍑芥暟閮藉畾涔夋垚鍐呰仈鍑芥暟锛熷鏋滄墍鏈夌殑鍑芥暟閮芥槸鍐呰仈鍑芥暟锛岃繕鐢ㄥ緱鐫€鈥滃唴鑱斺€濊繖涓叧閿瓧鍚楋紵鍐呰仈鏄互浠g爜鑶ㄨ儉锛堝鍒訛級涓轟唬浠鳳紝浠呬粎鐪佸幓浜嗗嚱鏁拌皟鐢ㄧ殑寮€閿€锛屼粠鑰屾彁楂樺嚱鏁扮殑鎵ц鏁堢巼銆?/span>濡傛灉鎵ц鍑芥暟浣撳唴浠g爜鐨勬椂闂達紝鐩告瘮浜庡嚱鏁拌皟鐢ㄧ殑寮€閿€杈冨ぇ锛岄偅涔堟晥鐜囩殑鏀惰幏浼氬緢灝戙€傚彠涓€鏂歸潰锛屾瘡涓€澶勫唴鑱斿嚱鏁扮殑璋冪敤閮借澶嶅埗浠g爜锛屽皢浣跨▼搴忕殑鎬諱唬鐮侀噺澧炲ぇ锛屾秷鑰楁洿澶氱殑鍐呭瓨絀洪棿銆?/span>

濡傛灉鍑芥暟浣撳唴鐨勪唬鐮佹瘮杈冮暱锛屼嬌鐢ㄥ唴鑱斿皢瀵艱嚧鍐呭瓨娑堣€椾唬浠瘋緝楂樸€傚鏋滃嚱鏁頒綋鍐呭嚭鐜板驚鐜紝閭d箞鎵ц鍑芥暟浣撳唴浠g爜鐨勬椂闂磋姣斿嚱鏁拌皟鐢ㄧ殑寮€閿€澶с€傜被鐨勬瀯閫犲嚱鏁板拰鏋愭瀯鍑芥暟瀹規槗璁╀漢璿В鎴愪嬌鐢ㄥ唴鑱旀洿鏈夋晥銆傝褰撳績鏋勯€犲嚱鏁板拰鏋愭瀯鍑芥暟鍙兘浼氶殣鈃忎竴浜涜涓猴紝濡傗€滃伔鍋峰湴鈥濇墽琛屼簡鍩虹被鎴栨垚鍛樺璞$殑鏋勯€犲嚱鏁板拰鏋愭瀯鍑芥暟銆傛墍浠ヤ笉瑕侀殢渚垮湴灝嗘瀯閫犲嚱鏁板拰鏋愭瀯鍑芥暟鐨勫畾涔変綋鏀懼湪綾誨0鏄庝腑銆備竴涓ソ鐨勭紪璿戝櫒灝嗕細鏍規嵁鍑芥暟鐨勫畾涔変綋锛岃嚜鍔ㄥ湴鍙栨秷涓嶅€煎緱鐨勫唴鑱旓紙榪欒繘涓€姝ヨ鏄庝簡 inline 涓嶅簲璿ュ嚭鐜板湪鍑芥暟鐨勫0鏄庝腑锛夈€?/span>

鍐呰仈鍑芥暟鏃㈣兘澶熷幓闄ゅ嚱鏁拌皟鐢ㄦ墍甯︽潵鐨勬晥鐜囪礋鎷呭張鑳藉淇濈暀涓€鑸嚱鏁扮殑浼樼偣銆傜劧鑰岋紝鍐呰仈鍑芥暟騫朵笉鏄竾鑳借嵂锛屽湪涓€浜涙儏鍐典笅锛屽畠鐢氳嚦鑳藉闄嶄綆紼嬪簭鐨勬€ц兘銆傚洜姝ゅ湪浣跨敤鐨勬椂鍊欏簲璿ユ厧閲嶃€偮犅犅?br> 聽聽聽聽 1锛庢垜浠厛鏉ョ湅鐪嬪唴鑱斿嚱鏁扮粰鎴戜滑甯︽潵鐨勫ソ澶勶細浠庝竴涓敤鎴風殑瑙掑害鏉ョ湅锛屽唴鑱斿嚱鏁扮湅璧鋒潵鍜屾櫘閫氬嚱鏁頒竴鏍鳳紝 瀹冨彲浠ユ湁鍙傛暟鍜岃繑鍥炲€鹼紝涔熷彲浠ユ湁鑷繁鐨勪綔鐢ㄥ煙锛岀劧鑰屽畠鍗翠笉浼氬紩鍏ヤ竴鑸嚱鏁拌皟鐢ㄦ墍甯︽潵鐨勮礋鎷呫€傚彠澶栵紝 瀹冨彲浠ユ瘮瀹忔洿瀹夊叏鏇村鏄撹皟璿曘€偮犅犅?br> 聽聽聽 褰撶劧鏈変竴鐐瑰簲璿ユ剰璿嗗埌锛宨nline聽聽 specifier浠呬粎鏄緙栬瘧鍣ㄧ殑寤鴻锛岀紪璿戝櫒鏈夋潈鍒╁拷鐣ヨ繖涓緩璁€傞偅涔堢紪璿戝櫒鏄浣曞喅瀹氬嚱鏁板唴鑱斾笌鍚﹀憿锛熶竴鑸儏鍐典笅鍏抽敭鎬у洜緔犲寘鎷嚱鏁頒綋鐨勫ぇ灝忥紝鏄惁鏈夊矓閮ㄥ璞¤澹版槑锛屽嚱鏁扮殑澶嶆潅鎬х瓑絳夈€偮犅犅?br> 聽聽聽聽 2锛庨偅涔堝鏋滀竴涓嚱鏁拌澹版槑涓篿nline浣嗘槸鍗存病鏈夎鍐呰仈灝嗕細鍙戠敓浠€涔堝憿锛熺悊璁轟笂锛屽綋緙栬瘧鍣ㄦ嫆緇濆唴鑱斾竴涓犅?鍑芥暟鐨勬椂鍊欙紝閭d釜鍑芥暟浼氬儚鏅€氬嚱鏁頒竴鏍瘋瀵瑰緟锛屼絾鏄繕浼氬嚭鐜頒竴浜涘叾浠栫殑闂銆備緥濡備笅闈㈣繖孌典唬鐮侊細 聽聽

  //   filename   Time.h   
  #include<ctime>   
  #include<iostream>   
  using   namespace   std;   
  class   Time   
  {   
  public:   
          inline   void   Show()  
          {   
              for (int   i   =   0;   i<10;   i++)
                  cout<<time(0)<<endl;
          }   
  };  

聽聽聽聽 鍥犱負鎴愬憳鍑芥暟Time::Show()鍖呮嫭涓€涓矓閮ㄥ彉閲忓拰涓€涓猣or寰幆锛屾墍浠ョ紪璿戝櫒涓€鑸嫆緇漣nline锛屽苟涓旀妸瀹冨綋浣滀竴涓櫘閫氱殑鎴愬憳鍑芥暟銆備絾鏄繖涓寘鍚被澹版槑鐨勫ご鏂囦歡浼氳鍗曠嫭鐨?include榪涘悇涓嫭絝嬬殑緙栬瘧鍗曞厓涓細聽聽聽

  //   filename   f1.cpp   
  #include   "Time.h"   
  void   f1()   
  {   
          Time   t1;   
          t1.Show();   
  }   
  //   filename   f2.cpp   
  #include   "Time.h"   
  void   f2()   
  {   
          Time   t2;   
          t2.Show();   
  }  
聽 緇撴灉緙栬瘧鍣ㄤ負榪欎釜紼嬪簭鐢熸垚浜嗕袱涓溮鍚屾垚鍛樺嚱鏁扮殑鎷瘋礉锛毬犅犅?br>
  void   f1();   
  void   f2();   
  int   main()   
  {   
          f1();     
          f2();   
          return   0;   
  } 
聽聽
聽聽聽聽 褰撶▼搴忚閾炬帴鐨勬椂鍊欙紝linker灝嗕細闈㈠涓や釜鐩稿悓鐨凾ime::Show()鎷瘋礉锛屼簬鏄嚱鏁伴噸瀹氫箟鐨勮繛鎺ラ敊璿彂鐢熴€備絾鏄€佷竴浜涚殑C++瀹炵幇瀵逛粯榪欑鎯呭喌鐨勫姙娉曟槸閫氳繃鎶婁竴涓猽n-inlined鍑芥暟褰撲綔static鏉ュ鐞嗐€傚洜姝ゆ瘡涓€浠藉嚱鏁版嫹璐濅粎浠呭湪鑷繁鐨勭紪璿戝崟鍏冧腑鍙锛岃繖鏍烽摼鎺ラ敊璿氨瑙e喅浜嗭紝浣嗘槸鍦ㄧ▼搴忎腑鍗翠細鐣欎笅澶氫喚鍑芥暟鎷瘋礉銆傚湪榪欑鎯呭喌涓嬶紝紼嬪簭鐨勬€ц兘涓嶄絾娌℃湁鎻愬崌锛屽弽鑰屽鍔犱簡緙栬瘧鍜岄摼鎺ユ椂闂翠互鍙婃渶緇堝彲鎵ц浣撶殑澶у皬銆備絾鏄垢榪愮殑鏄紝鏂扮殑C++鏍囧噯涓叧浜巙n-inlined鍑芥暟鐨勮娉曞凡緇忔敼鍙樸€備竴涓鍚堟爣鍑咰++瀹炵幇搴旇鍙敓鎴愪竴浠藉嚱鏁版嫹璐濄€傜劧鑰岋紝瑕佹兂鎵€鏈夌殑緙栬瘧鍣ㄩ兘鏀寔榪欎竴鐐瑰彲鑳借繕闇€瑕佸緢闀挎椂闂淬€?

聽聽聽聽 鍙﹀鍏充簬鍐呰仈鍑芥暟榪樻湁涓や釜鏇翠護浜哄ご鐤肩殑闂銆傜涓€涓棶棰樻槸璿ュ浣曡繘琛岀淮鎶ゃ€備竴涓嚱鏁板紑濮嬬殑鏃跺€欏彲鑳戒互鍐呰仈鐨勫艦寮忓嚭鐜幫紝浣嗘槸闅忕潃緋葷粺鐨勬墿灞曪紝鍑芥暟浣撳彲鑳借姹傛坊鍔犻澶栫殑鍔熻兘锛岀粨鏋滃唴鑱斿嚱鏁板氨鍙樺緱涓嶅お鍙兘锛屽洜姝ら渶瑕佹妸inline聽聽 specifier鍘婚櫎浠ュ強鎶婂嚱鏁頒綋鏀懼埌涓€涓崟鐙殑婧愭枃浠朵腑銆傚彠涓€涓棶棰樻槸褰撳唴鑱斿嚱鏁拌搴旂敤鍦ㄤ唬鐮佸簱鐨勬椂鍊欎駭鐢熴€傚綋鍐呰仈鍑芥暟鏀瑰彉鐨勬椂鍊欙紝鐢ㄦ埛蹇呴』閲嶆柊緙栬瘧浠栦滑鐨勪唬鐮佷互鍙嶆槧榪欑鏀瑰彉銆傜劧鑰屽浜庝竴涓潪鍐呰仈鍑芥暟锛岀敤鎴蜂粎浠呴渶瑕侀噸鏂伴摼鎺ュ氨鍙互浜嗐€偮?/span>


聽聽聽聽 榪欓噷鎯寵璿寸殑鏄紝鍐呰仈鍑芥暟騫朵笉鏄竴涓寮烘€ц兘鐨勭伒涓瑰鑽€傚彧鏈夊綋鍑芥暟闈炲父鐭皬鐨勬椂鍊欏畠鎵嶈兘寰楀埌鎴戜滑鎯寵鐨勬晥鏋?/span>锛屼絾鏄鏋滃嚱鏁板苟涓嶆槸寰堢煭鑰屼笖鍦ㄥ緢澶氬湴鏂歸兘琚皟鐢ㄧ殑璿濓紝閭d箞灝嗕細浣垮緱鍙墽琛屼綋鐨勪綋縐澶с€傛渶浠や漢鐑︽伡鐨勮繕鏄綋緙栬瘧鍣ㄦ嫆緇濆唴鑱旂殑鏃跺€欍€傚湪鑰佺殑瀹炵幇涓紝緇撴灉寰堜笉灝戒漢鎰忥紝鉶界劧鍦ㄦ柊鐨勫疄鐜頒腑鏈夊緢澶х殑鏀瑰杽锛屼絾鏄粛鐒惰繕鏄笉閭d箞瀹屽杽鐨勩€備竴浜涚紪璿戝櫒鑳藉瓚衝鐨勮仾鏄庢潵鎸囧嚭鍝簺鍑芥暟鍙互鍐呰仈鍝簺涓嶈兘锛屼絾鏄紝澶у鏁扮紪璿戝櫒灝變笉閭d箞鑱槑浜嗭紝鍥犳榪欏氨闇€瑕佹垜浠殑緇忛獙鏉ュ垽鏂€傚鏋滃唴鑱斿嚱鏁頒笉鑳藉寮鴻鑳斤紝灝遍伩鍏嶄嬌鐢ㄥ畠锛? 聽

鍐呰仈鍜屽畯鐨勬瘮杈?/span>

1.棰勫鐞嗗櫒鍦ㄥ畯鏇挎崲鏃舵槗浜х敓杈歸檯鏁堝簲锛屽鑷存剰鎯充笉鍒扮殑鍚庢灉锛?/span>
2.瀹忎笉鑳借皟璿曪紝鍐呰仈鍑芥暟鍙互锛?/span>
3.瀹忔棤娉曟搷綰電被鐨勭鏈夋垚鍛橈紱
4.鍐呰仈鍑芥暟鐨勫彠澶栦竴涓紭鐐規槸锛屽嚱鏁拌鍐呰仈鍚庯紝緙栬瘧鍣ㄥ彲浠ユ牴鎹笂涓嬫枃瀵逛唬鐮佸仛榪涗竴姝ヤ紭鍖栥€傝繖縐嶆妧鏈櫘閫氬嚱鏁版槸鍋氫笉鍒扮殑锛屽洜涓轟竴鏃﹁繘鍏ユ櫘閫氬嚱鏁頒綋鍐呭氨浼氳劚紱昏皟鐢ㄥ嚱鏁扮殑涓婁笅鏂囥€?/span>

最後更新:2017-04-03 08:26:11

  上一篇:go 字典樹-百度之星-Xor Sum
  下一篇:go UVA之1330 - City Game