阅读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