锘??xml version="1.0" encoding="utf-8" standalone="yes"?>久久成人精品无人区,国产精品电影观看,欧美精品一区二区三区在线播放http://www.shnenglu.com/robinson119/archive/2007/10/26/35196.html瀹濇潐瀹濇潐Fri, 26 Oct 2007 00:31:00 GMThttp://www.shnenglu.com/robinson119/archive/2007/10/26/35196.htmlhttp://www.shnenglu.com/robinson119/comments/35196.htmlhttp://www.shnenglu.com/robinson119/archive/2007/10/26/35196.html#Feedback0http://www.shnenglu.com/robinson119/comments/commentRss/35196.htmlhttp://www.shnenglu.com/robinson119/services/trackbacks/35196.html 

1銆佷粈涔堟槸const?
   甯哥被鍨嬫槸鎸囦嬌鐢ㄧ被鍨嬩慨楗扮const璇存槑鐨勭被鍨嬶紝甯哥被鍨嬬殑鍙橀噺鎴栧璞$殑鍊兼槸涓嶈兘琚洿鏂扮殑銆傦紙褰撶劧錛屾垜浠彲浠ュ伔姊佹崲鏌辮繘琛屾洿鏂幫細錛?/p>

2銆佷負浠涔堝紩鍏onst錛?br>銆 const 鎺ㄥ嚭鐨勫垵濮嬬洰鐨勶紝姝f槸涓轟簡鍙栦唬棰勭紪璇戞寚浠わ紝娑堥櫎瀹冪殑緙虹偣錛屽悓鏃剁戶鎵垮畠鐨勪紭鐐廣?/p>

3銆乧ons鏈変粈涔堜富瑕佺殑浣滅敤錛?br>   錛?錛夊彲浠ュ畾涔塩onst甯擱噺錛屽叿鏈変笉鍙彉鎬с?br>        渚嬪錛?br>             const int Max=100;
             int Array[Max];       
   錛?錛変究浜庤繘琛岀被鍨嬫鏌ワ紝浣跨紪璇戝櫒瀵瑰鐞嗗唴瀹規湁鏇村浜嗚В錛屾秷闄や簡涓浜涢殣鎮c?br> 渚嬪錛?br>             void f(const int i) { .........}
        緙栬瘧鍣ㄥ氨浼氱煡閬搃鏄竴涓父閲忥紝涓嶅厑璁鎬慨鏀癸紱
   錛?錛夊彲浠ラ伩鍏嶆剰涔夋ā緋婄殑鏁板瓧鍑虹幇錛屽悓鏍峰彲浠ュ緢鏂逛究鍦拌繘琛屽弬鏁扮殑璋冩暣鍜屼慨鏀廣?br>        鍚屽畯瀹氫箟涓鏍鳳紝鍙互鍋氬埌涓嶅彉鍒欏凡錛屼竴鍙橀兘鍙橈紒濡傦紙1錛変腑錛屽鏋滄兂淇敼Max鐨勫唴瀹癸紝鍙渶瑕侊細const int Max=you want;鍗沖彲錛?br>   錛?錛夊彲浠ヤ繚鎶よ淇グ鐨勪笢瑗匡紝闃叉鎰忓鐨勪慨鏀癸紝澧炲己紼嬪簭鐨勫仴澹с?br>        榪樻槸涓婇潰鐨勪緥瀛愶紝濡傛灉鍦ㄥ嚱鏁頒綋鍐呬慨鏀逛簡i錛岀紪璇戝櫒灝變細鎶ラ敊錛?br>        渚嬪錛?
             void f(const int i) { i=10;//error! }
    (5) 涓哄嚱鏁伴噸杞芥彁渚涗簡涓涓弬鑰冦?br>         class A
         {
           ......
           void f(int i)       {......} file://涓涓嚱鏁?br>           void f(int i) const {......} file://涓?/font>涓涓嚱鏁扮殑閲嶈澆
            ......
          };
     (6) 鍙互鑺傜渷絀洪棿錛岄伩鍏嶄笉蹇呰鐨勫唴瀛樺垎閰嶃?br>         渚嬪錛?br>              #define PI 3.14159         file://甯?/font>閲忓畯
              const doulbe  Pi=3.14159;  file://姝?/font>鏃跺茍鏈皢Pi鏀懼叆ROM涓?br>              ......
              double i=Pi;               file://姝?/font>鏃朵負Pi鍒嗛厤鍐呭瓨錛屼互鍚庝笉鍐嶅垎閰嶏紒
              double I=PI;               file://緙?/font>璇戞湡闂磋繘琛屽畯鏇挎崲錛屽垎閰嶅唴瀛?br>              double j=Pi;               file://娌?/font>鏈夊唴瀛樺垎閰?br>              double J=PI;               file://鍐?/font>榪涜瀹忔浛鎹紝鍙堜竴嬈″垎閰嶅唴瀛橈紒
         const瀹氫箟甯擱噺浠庢眹緙栫殑瑙掑害鏉ョ湅錛屽彧鏄粰鍑轟簡瀵瑰簲鐨勫唴瀛樺湴鍧錛岃屼笉鏄薄#define涓鏍風粰鍑虹殑鏄珛鍗蟲暟錛屾墍浠ワ紝const瀹氫箟鐨勫父閲忓湪紼嬪簭榪愯榪囩▼涓彧鏈変竴浠芥嫹璐濓紝鑰?define瀹氫箟鐨勫父閲忓湪鍐呭瓨涓湁鑻ュ共涓嫹璐濄?br>     錛?錛?鎻愰珮浜嗘晥鐜囥?br>           緙栬瘧鍣ㄩ氬父涓嶄負鏅歝onst甯擱噺鍒嗛厤瀛樺偍絀洪棿錛岃屾槸灝嗗畠浠繚瀛樺湪絎﹀彿琛ㄤ腑錛岃繖浣垮緱瀹冩垚涓轟竴涓紪璇戞湡闂寸殑甯擱噺錛屾病鏈変簡瀛樺偍涓庤鍐呭瓨鐨勬搷浣滐紝浣垮緱瀹冪殑鏁堢巼涔熷緢楂樸?/p>

3銆佸浣曚嬌鐢╟onst錛?br>   錛?錛変慨楗頒竴鑸父閲?br>銆銆   涓鑸父閲忔槸鎸囩畝鍗曠被鍨嬬殑甯擱噺銆傝繖縐嶅父閲忓湪瀹氫箟鏃訛紝淇グ絎onst鍙互鐢ㄥ湪綾誨瀷璇存槑絎﹀墠錛屼篃鍙互鐢ㄥ湪綾誨瀷璇存槑絎﹀悗銆?br>       渚嬪錛?nbsp; 
           int const x=2;銆銆鎴栥銆const int x=2;
   錛?錛変慨楗板父鏁扮粍
銆銆     瀹氫箟鎴栬鏄庝竴涓父鏁扮粍鍙噰鐢ㄥ涓嬫牸寮忥細
銆銆     int const a[5]={1, 2, 3, 4, 5};銆
         const int a[5]={1, 2, 3, 4, 5};
   錛?錛変慨楗板父瀵硅薄
     銆甯稿璞℃槸鎸囧璞″父閲忥紝瀹氫箟鏍煎紡濡備笅錛?br>  class A;
銆銆     const A a;
         A const a;
銆銆    瀹氫箟甯稿璞℃椂錛屽悓鏍瘋榪涜鍒濆鍖栵紝騫朵笖璇ュ璞′笉鑳藉啀琚洿鏂幫紝淇グ絎onst鍙互鏀懼湪綾誨悕鍚庨潰錛屼篃鍙互鏀懼湪綾誨悕鍓嶉潰銆傘
   錛?錛変慨楗板父鎸囬拡
        const int *A;        file://const淇グ鎸囧悜鐨勫璞★紝A鍙彉錛孉鎸囧悜鐨勫璞′笉鍙彉
        int const *A; 銆     file://const淇グ鎸囧悜鐨勫璞★紝A鍙彉錛孉鎸囧悜鐨勫璞′笉鍙彉
        int *const A; 銆     file://const淇グ鎸囬拡A錛?nbsp;    A涓嶅彲鍙橈紝A鎸囧悜鐨勫璞″彲鍙?
        const int *const A;  file://鎸?/font>閽圓鍜孉鎸囧悜鐨勫璞¢兘涓嶅彲鍙?br>   錛?錛変慨楗板父寮曠敤
       銆浣跨敤const淇グ絎︿篃鍙互璇存槑寮曠敤錛岃璇存槑鐨勫紩鐢ㄤ負甯稿紩鐢紝璇ュ紩鐢ㄦ墍寮曠敤鐨勫璞′笉鑳借鏇存柊銆傚叾瀹氫箟鏍煎紡濡備笅錛?br>銆銆     const double & v;
銆 錛?錛変慨楗板嚱鏁扮殑甯稿弬鏁?br>        const淇グ絎︿篃鍙互淇グ鍑芥暟鐨勪紶閫掑弬鏁幫紝鏍煎紡濡備笅錛?br>        void Fun(const int Var);
        鍛婅瘔緙栬瘧鍣╒ar鍦ㄥ嚱鏁頒綋涓殑鏃犳硶鏀瑰彉錛屼粠鑰岄槻姝簡浣跨敤鑰呯殑涓浜涙棤鎰忕殑鎴栭敊璇殑淇敼銆?nbsp;   
   錛?錛変慨楗板嚱鏁扮殑榪斿洖鍊鹼細
        const淇グ絎︿篃鍙互淇グ鍑芥暟鐨勮繑鍥炲鹼紝鏄繑鍥炲間笉鍙鏀瑰彉錛屾牸寮忓涓嬶細
            const int Fun1();
            const MyClass Fun2();
   錛?錛変慨楗扮被鐨勬垚鍛樺嚱鏁幫細
        const淇グ絎︿篃鍙互淇グ綾葷殑鎴愬憳鍑芥暟錛屾牸寮忓涓嬶細
            class ClassName
     {
             public:
            銆    銆int Fun() const;
            銆       .....
             }錛?br>        榪欐牱錛屽湪璋冪敤鍑芥暟Fun鏃跺氨涓嶈兘淇敼綾婚噷闈㈢殑鏁版嵁
    錛?錛夊湪鍙︿竴榪炴帴鏂囦歡涓紩鐢╟onst甯擱噺
         extern const int i;     file://姝?/font>紜殑寮曠敤
         extern const int j=10;  file://閿?/font>璇紒甯擱噺涓嶅彲浠ヨ鍐嶆璧嬪?br>    鍙﹀錛岃繕瑕佹敞鎰忥紝甯擱噺蹇呴』鍒濆鍖栵紒
         渚嬪錛?br>             const int i=5; 

4銆佸嚑鐐瑰煎緱璁ㄨ鐨勫湴鏂癸細
   錛?錛塩onst絀剁珶鎰忓懗鐫浠涔堬紵
        璇翠簡榪欎箞澶氾紝浣犺涓篶onst鎰忓懗鐫浠涔堬紵涓縐嶄慨楗扮錛熸帴鍙f娊璞★紵涓縐嶆柊綾誨瀷錛?br>        涔熻閮芥槸錛屽湪Stroustup鏈鍒濆紩鍏ヨ繖涓叧閿瓧鏃訛紝鍙槸涓哄璞℃斁鍏OM鍋氬嚭浜嗕竴縐嶅彲鑳斤紝瀵逛簬const瀵硅薄錛孋++鏃㈠厑璁稿鍏惰繘琛岄潤鎬佸垵濮嬪寲錛屼篃鍏佽瀵逛粬榪涜鍔ㄦ佸垵濮嬪寲銆傜悊鎯崇殑const瀵硅薄搴旇鍦ㄥ叾鏋勯犲嚱鏁板畬鎴愪箣鍓嶉兘鏄彲鍐欑殑錛屽湪鏋愬鍑芥暟鎵ц寮濮嬪悗涔熼兘鏄彲鍐欑殑錛屾崲鍙ヨ瘽璇達紝const瀵硅薄鍏鋒湁浠庢瀯閫犲嚱鏁板畬鎴愬埌鏋愬鍑芥暟鎵ц涔嬪墠鐨勪笉鍙樻э紝濡傛灉榪濆弽浜嗚繖鏉¤鍒欙紝緇撴灉閮芥槸鏈畾涔夌殑錛佽櫧鐒舵垜浠妸const鏀懼叆ROM涓紝浣嗚繖騫朵笉鑳藉淇濊瘉const鐨勪換浣曞艦寮忕殑鍫曡惤錛屾垜浠悗闈細緇欏嚭鍏蜂綋鐨勫姙娉曘傛棤璁篶onst瀵硅薄琚斁鍏OM涓紝榪樻槸閫氳繃瀛樺偍淇濇姢鏈哄埗鍔犱互淇濇姢錛岄兘鍙兘淇濊瘉錛屽浜庣敤鎴瘋岃█榪欎釜瀵硅薄娌℃湁鏀瑰彉銆傛崲鍙ヨ瘽璇達紝搴熸枡鏀墮泦鍣紙鎴戜滑浠ュ悗浼氳緇嗚璁猴紝榪欏氨涓絎斿甫榪囷級鎴栨暟鎹簱緋葷粺瀵逛竴涓猚onst鐨勪慨鏀規庢病鏈変換浣曢棶棰樸?br>   錛?錛変綅鍏僣onst V.S. 鎶借薄const?
        瀵逛簬鍏抽敭瀛梒onst鐨勮В閲婃湁濂藉嚑縐嶆柟寮忥紝鏈甯歌鐨勫氨鏄綅鍏僣onst 鍜?鎶借薄const銆備笅闈㈡垜浠湅涓涓緥瀛愶細
        class A
        {
         public:
               ......
               A f(const A& a);
               ......
         };
         濡傛灉閲囩敤鎶借薄const榪涜瑙i噴錛岄偅灝辨槸f鍑芥暟涓嶄細鍘繪敼鍙樻墍寮曠敤瀵硅薄鐨勬娊璞″鹼紝濡傛灉閲囩敤浣嶅厓const榪涜瑙i噴錛岄偅灝辨垚浜唂鍑芥暟涓嶄細鍘繪敼鍙樻墍寮曠敤瀵硅薄鐨勪換浣曚綅鍏冦?br>         鎴戜滑鍙互鐪嬪埌浣嶅厓瑙i噴姝f槸c++瀵筩onst闂鐨勫畾涔夛紝const鎴愬憳鍑芥暟涓嶈鍏佽淇敼瀹冩墍鍦ㄥ璞$殑浠諱綍涓涓暟鎹垚鍛樸?br>         涓轟粈涔堣繖鏍峰憿錛熷洜涓轟嬌鐢ㄤ綅鍏僣onst鏈?涓ソ澶勶細
         鏈澶х殑濂藉鏄彲浠ュ緢瀹規槗鍦版嫻嬪埌榪濆弽浣嶅厓const瑙勫畾鐨勪簨浠訛細緙栬瘧鍣ㄥ彧鐢ㄥ幓瀵繪壘鏈夋病鏈夊鏁版嵁鎴愬憳鐨勮祴鍊煎氨鍙互浜嗐傚彟澶栵紝濡傛灉鎴戜滑閲囩敤浜嗕綅鍏僣onst錛岄偅涔堬紝瀵逛簬涓浜涙瘮杈冪畝鍗曠殑const瀵硅薄錛屾垜浠氨鍙互鎶婂畠瀹夊叏鐨勬斁鍏OM涓紝瀵逛簬涓浜涚▼搴忚岃█錛岃繖鏃犵枒鏄竴涓緢閲嶈鐨勪紭鍖栨柟寮忋傦紙鍏充簬浼樺寲澶勭悊錛屾垜浠埌鏃跺欎笓闂ㄨ繘琛岃璁猴級
         褰撶劧錛屼綅鍏僣onst涔熸湁緙虹偣錛岃涓嶇劧錛屾娊璞onst涔熷氨娌℃湁浜х敓鐨勫繀瑕佷簡銆?br>         棣栧厛錛屼綅鍏僣onst鐨勬娊璞℃ф瘮鎶借薄const鐨勭駭鍒洿浣庯紒瀹為檯涓婏紝澶у閮界煡閬擄紝涓涓簱鎺ュ彛鐨勬娊璞℃х駭鍒秺浣庯紝浣跨敤榪欎釜搴撳氨瓚婂洶闅俱?br>         鍏舵錛屼嬌鐢ㄤ綅鍏僣onst鐨勫簱鎺ュ彛浼氭毚闇插簱鐨勪竴浜涘疄鐜扮粏鑺傦紝鑰岃繖寰寰浼氬甫鏉ヤ竴浜涜礋闈㈡晥搴斻傛墍浠ワ紝鍦ㄥ簱鎺ュ彛鍜岀▼搴忓疄鐜扮粏鑺備笂錛屾垜浠兘搴旇閲囩敤鎶借薄const銆?br>         鏈夋椂錛屾垜浠彲鑳藉笇鏈涘const鍋氬嚭涓浜涘叾瀹冪殑瑙i噴錛岄偅涔堬紝灝辮娉ㄦ剰浜嗭紝鐩墠錛屽ぇ澶氭暟瀵筩onst鐨勮В閲婇兘鏄被鍨嬩笉瀹夊叏鐨勶紝榪欓噷鎴戜滑灝變笉涓句緥瀛愪簡錛屼綘鍙互鑷繁鑰冭檻涓涓嬶紝鎬諱箣錛屾垜浠敖閲忛伩鍏嶅const鐨勯噸鏂拌В閲娿?br>   錛?錛夋斁鍦ㄧ被鍐呴儴鐨勫父閲忔湁浠涔堥檺鍒訛紵
        鐪嬬湅涓嬮潰榪欎釜渚嬪瓙錛?br>        class A
        {
         private:
           const int c3 = 7;           // ???
       static int c4 = 7;          // ???
       static const float c5 = 7;  // ???
          ......
  };
         浣犺涓轟笂闈㈢殑3鍙ュ鍚楋紵鍛靛懙錛岄兘涓嶅錛佷嬌鐢ㄨ繖縐嶇被鍐呴儴鐨勫垵濮嬪寲璇硶鐨勬椂鍊欙紝甯擱噺蹇呴』鏄涓涓父閲忚〃杈懼紡鍒濆鍖栫殑鏁村瀷鎴栨灇涓劇被鍨嬶紝鑰屼笖蹇呴』鏄痵tatic鍜宑onst褰㈠紡銆傝繖鏄劇劧鏄竴涓緢涓ラ噸鐨勯檺鍒訛紒
         閭d箞錛屾垜浠殑鏍囧噯濮斿憳浼氫負浠涔堝仛榪欐牱鐨勮瀹氬憿錛熶竴鑸潵璇達紝綾誨湪涓涓ご鏂囦歡涓澹版槑錛岃屽ご鏂囦歡琚寘鍚埌璁稿浜掔浉璋冪敤鐨勫崟鍏冨幓銆備絾鏄紝涓轟簡閬垮厤澶嶆潅鐨勭紪璇戝櫒瑙勫垯錛孋++瑕佹眰姣忎竴涓璞″彧鏈変竴涓崟鐙殑瀹氫箟銆傚鏋淐++鍏佽鍦ㄧ被鍐呴儴瀹氫箟涓涓拰瀵硅薄涓鏍峰崰鎹唴瀛樼殑瀹炰綋鐨勮瘽錛岃繖縐嶈鍒欏氨琚牬鍧忎簡銆?br>    錛?錛夊浣曞垵濮嬪寲綾誨唴閮ㄧ殑甯擱噺錛?br>         涓縐嶆柟娉曞氨鏄痵tatic 鍜?const 騫剁敤錛屽湪鍐呴儴鍒濆鍖栵紝濡備笂闈㈢殑渚嬪瓙錛?br>         鍙︿竴涓緢甯歌鐨勬柟娉曞氨鏄垵濮嬪寲鍒楄〃錛?br>         class A
         {
          public:
                A(int i=0):test(i) {}
          private:
                const int i;
          }錛?br>          榪樻湁涓縐嶆柟寮忓氨鏄湪澶栭儴鍒濆鍖栵紝渚嬪錛?br>         class A
         {
          public:
                A() {}
          private:
                static const int i;  file://娉?/font>鎰忓繀欏繪槸闈欐佺殑錛?br>          }錛?br>          const int A::i=3;
     錛?錛夊父閲忎笌鏁扮粍鐨勭粍鍚堟湁浠涔堢壒孌婂悧錛?br>          鎴戜滑緇欏嚭涓嬮潰鐨勪唬鐮侊細
           const int size[3]={10,20,50};
           int array[size[2]];
           鏈変粈涔堥棶棰樺悧錛熷浜嗭紝緙栬瘧閫氫笉榪囷紒涓轟粈涔堝憿錛?br>           const鍙互鐢ㄤ簬闆嗗悎錛屼絾緙栬瘧鍣ㄤ笉鑳芥妸涓涓泦鍚堝瓨鏀懼湪瀹冪殑絎﹀彿琛ㄩ噷錛屾墍浠ュ繀欏誨垎閰嶅唴瀛樸傚湪榪欑鎯呭喌涓嬶紝const鎰忓懗鐫“涓嶈兘鏀瑰彉鐨勪竴鍧楀瓨鍌?#8221;銆傜劧鑰岋紝鍏跺煎湪緙栬瘧鏃朵笉鑳借浣跨敤錛屽洜涓虹紪璇戝櫒鍦ㄧ紪璇戞椂涓嶉渶瑕佺煡閬撳瓨鍌ㄧ殑鍐呭銆傝嚜鐒訛紝浣滀負鏁扮粍鐨勫ぇ灝忓氨涓嶈浜嗭細錛?br>         浣犲啀鐪嬬湅涓嬮潰鐨勪緥瀛愶細
          class A
         {
          public:
                A(int i=0):test[2]({1,2}) {} file://浣?/font>璁や負琛屽悧錛?br>          private:
                const int test[2];
          }錛?br>         vc6涓嬬紪璇戦氫笉榪囷紝涓轟粈涔堝憿錛?br>         鍏充簬榪欎釜闂錛屽墠浜涙椂闂達紝njboy闂垜鏄庝箞鍥炰簨錛熸垜鍙嶉棶浠栵細“浣犺涓哄憿錛?#8221;浠栨兂浜嗘兂錛岀粰鍑轟簡涓涓嬭В閲婏紝澶у鍙互鐪嬬湅錛氭垜浠煡閬撶紪璇戝櫒鍫嗗垵濮嬪寲鍒楄〃鐨勬搷浣滄槸鍦ㄦ瀯閫犲嚱鏁頒箣鍐咃紝鏄懼紡璋冪敤鍙敤浠g爜涔嬪墠錛屽垵濮嬪寲鐨勬搴忎緷鎹暟鎹0鏄庣殑嬈″簭銆傚垵濮嬪寲鏃舵満搴旇娌℃湁浠涔堥棶棰橈紝閭d箞灝卞彧鏈夋槸緙栬瘧鍣ㄥ鏁扮粍鍋氫簡浠涔堟墜鑴氾紒鍏跺疄鍋氫粈涔堟墜鑴氾紝鎴戜篃涓嶇煡閬擄紝鎴戝彧濂藉浠栬繘琛岀寽嫻嬶細緙栬瘧鍣ㄦ悳绱㈠埌test鍙戠幇鏄竴涓潪闈欐佺殑鏁扮粍錛屼簬鏄紝涓轟粬鍒嗛厤鍐呭瓨絀洪棿錛岃繖閲岄渶瑕佹敞鎰忎簡錛屽畠搴旇鏄竴涓嬪垎閰嶅畬錛屽茍闈炲厛鍒嗛厤test[0],鐒跺悗鍒╃敤鍒濆鍖栧垪琛ㄥ垵濮嬪寲錛屽啀鍒嗛厤test[1],榪欏氨瀵艱嚧鏁扮粍鐨勫垵濮嬪寲瀹為檯涓婃槸璧嬪鹼紒鐒惰岋紝甯擱噺涓嶅厑璁歌祴鍊鹼紝鎵浠ユ棤娉曢氳繃銆?br>        鍛靛懙錛岀湅浜嗚繖涓孌靛啝鍐曞爞鐨囩殑璇濓紝鐪熻鎴戠瑧姝諱簡錛乶jboy鍒垜鎻綘鐭憖錛氾級鎴戝姝ょ殑瑙i噴鏄繖鏍風殑錛欳++鏍囧噯鏈変竴涓瀹氾紝涓嶅厑璁告棤搴忓璞″湪綾誨唴閮ㄥ垵濮嬪寲錛屾暟緇勬樉鐒舵槸涓涓棤搴忕殑錛屾墍浠ヨ繖鏍風殑鍒濆鍖栨槸閿欒鐨勶紒瀵逛簬浠栵紝鍙兘鍦ㄧ被鐨勫閮ㄨ繘琛屽垵濮嬪寲錛屽鏋滄兂璁╁畠閫氳繃錛屽彧闇瑕佸0鏄庝負闈欐佺殑錛岀劧鍚庡垵濮嬪寲銆?br>         榪欓噷鎴戜滑鐪嬪埌錛屽父閲忎笌鏁扮粍鐨勭粍鍚堟病鏈変粈涔堢壒孌婏紒涓鍒囬兘鏄暟緇勬児鐨勭ジ錛?br>   錛?錛塼his鎸囬拡鏄笉鏄痗onst綾誨瀷鐨勶紵
        this鎸囬拡鏄竴涓緢閲嶈鐨勬蹇碉紝閭h濡備綍鐞嗚В濂瑰憿錛熶篃璁歌繖涓瘽棰樺お澶т簡錛岄偅鎴戜滑緙╁皬涓浜涳細this鎸囬拡鏄釜浠涔堢被鍨嬬殑錛熻繖瑕佺湅鍏蜂綋鎯呭喌錛氬鏋滃湪闈瀋onst鎴愬憳鍑芥暟涓紝this鎸囬拡鍙槸涓涓被綾誨瀷鐨勶紱濡傛灉鍦╟onst鎴愬憳鍑芥暟涓紝this鎸囬拡鏄竴涓猚onst綾葷被鍨嬬殑錛涘鏋滃湪volatile鎴愬憳鍑芥暟涓?this鎸囬拡灝辨槸涓涓獀olatile綾葷被鍨嬬殑銆?br>   錛?錛塩onst鍒板簳鏄笉鏄竴涓噸杞界殑鍙傝冨璞★紵
        鍏堢湅涓涓嬩笅闈㈢殑渚嬪瓙錛?br>        class A
         {
           ......
           void f(int i)       {......} file://涓涓嚱鏁?br>           void f(int i) const {......} file://涓?/font>涓涓嚱鏁扮殑閲嶈澆
            ......
          };
        涓婇潰鏄噸杞芥槸娌℃湁闂鐨勪簡錛岄偅涔堜笅闈㈢殑鍛紵
         class A
         {
           ......
           void f(int i)       {......} file://涓涓嚱鏁?br>           void f(const int i) {......} file://錛燂紵錛燂紵錛?/font>
            ......
         };
         榪欎釜鏄敊璇殑錛岀紪璇戦氫笉榪囥傞偅涔堟槸涓嶆槸璇存槑鍐呴儴鍙傛暟鐨刢onst涓嶄簣閲嶈澆鍛紵鍐嶇湅涓嬮潰鐨勪緥瀛愶細
        class A
         {
           ......
           void f(int& )       {......} file://涓涓嚱鏁?br>           void f(const int& ) {......} file://錛燂紵錛燂紵錛?/font>
            ......
         };
         榪欎釜紼嬪簭鏄紜殑錛岀湅鏉ヤ笂闈㈢殑緇撹鏄敊璇殑銆備負浠涔堜細榪欐牱鍛紵榪欒娑夊強鍒版帴鍙g殑閫忔槑搴﹂棶棰樸傛寜鍊間紶閫掓椂錛屽鐢ㄦ埛鑰岃█錛岃繖鏄忔槑鐨勶紝鐢ㄦ埛涓嶇煡閬撳嚱鏁板褰㈠弬鍋氫簡浠涔堟墜鑴氾紝鍦ㄨ繖縐嶆儏鍐典笅榪涜閲嶈澆鏄病鏈夋剰涔夌殑錛屾墍浠ヨ瀹氫笉鑳介噸杞斤紒褰撴寚閽堟垨寮曠敤琚紩鍏ユ椂錛岀敤鎴峰氨浼氬鍑芥暟鐨勬搷浣滄湁浜嗕竴瀹氱殑浜嗚В錛屼笉鍐嶆槸閫忔槑鐨勪簡錛岃繖鏃墮噸杞芥槸鏈夋剰涔夌殑錛屾墍浠ヨ瀹氬彲浠ラ噸杞姐?br>   錛?錛変粈涔堟儏鍐典笅涓篶onst鍒嗛厤鍐呭瓨錛?br>        浠ヤ笅鏄垜鎯沖埌鐨勫彲鑳芥儏鍐碉紝褰撶劧錛屾湁鐨勭紪璇戝櫒榪涜浜嗕紭鍖栵紝鍙兘涓嶅垎閰嶅唴瀛樸?br>        A銆佷綔涓洪潪闈欐佺殑綾繪垚鍛樻椂錛?br>        B銆佺敤浜庨泦鍚堟椂錛?br>        C銆佽鍙栧湴鍧鏃訛紱
        D銆佸湪main鍑芥暟浣撳唴閮ㄩ氳繃鍑芥暟鏉ヨ幏寰楀兼椂錛?br>        E銆乧onst鐨?class鎴杝truct鏈夌敤鎴峰畾涔夌殑鏋勯犲嚱鏁般佹瀽鏋勫嚱鏁版垨鍩虹被鏃訛紱銆?br>        F銆佸綋const鐨勯暱搴︽瘮璁$畻鏈哄瓧闀胯繕闀挎椂錛?br>        G銆佸弬鏁頒腑鐨刢onst錛?br>        H銆佷嬌鐢ㄤ簡extern鏃躲?br>        涓嶇煡閬撹繕鏈夋病鏈夊叾浠栨儏鍐碉紝嬈㈣繋楂樻墜鎸囩偣錛氾級       
   錛?錛変復鏃跺彉閲忓埌搴曟槸涓嶆槸甯擱噺錛?br>        寰堝鎯呭喌涓嬶紝緙栬瘧鍣ㄥ繀欏誨緩绔嬩復鏃跺璞°傚儚鍏朵粬浠諱綍瀵硅薄涓鏍鳳紝瀹冧滑闇瑕佸瓨鍌ㄧ┖闂磋屼笖蹇呴』琚瀯閫犲拰鍒犻櫎銆傚尯鍒槸鎴戜滑浠庢潵鐪嬩笉鍒扮紪璇戝櫒璐熻矗鍐沖畾瀹冧滑鐨勫幓鐣欎互鍙婂畠浠瓨鍦ㄧ殑緇嗚妭銆傚浜嶤++鏍囧噯鑽夋鑰岃█錛氫復鏃跺璞¤嚜鍔ㄥ湴鎴愪負甯擱噺銆傚洜涓烘垜浠氬父鎺ヨЕ涓嶅埌涓存椂瀵硅薄錛屼笉鑳戒嬌鐢ㄤ笌涔嬬浉鍏崇殑淇℃伅錛屾墍浠ュ憡璇変復鏃跺璞″仛涓浜涙敼鍙樻湁鍙兘浼氬嚭閿欍傚綋鐒訛紝榪欎笌緙栬瘧鍣ㄦ湁鍏籌紝渚嬪錛歷c6銆乿c7閮藉姝や綔浜嗘墿灞曪紝鎵浠ワ紝鐢ㄤ復鏃跺璞″仛宸﹀鹼紝緙栬瘧鍣ㄥ茍娌℃湁鎶ラ敊銆?br>   錛?0錛変笌static鎼厤浼氫笉浼氭湁闂錛?br>        鍋囪鏈変竴涓被錛?br>        class A
        {
         public:
             ......
             static void f() const { ......}
             ......
         };
         鎴戜滑鍙戠幇緙栬瘧鍣ㄤ細鎶ラ敊錛屽洜涓哄湪榪欑鎯呭喌涓媠tatic涓嶈兘澶熶笌const鍏卞瓨錛?br>         涓轟粈涔堝憿錛熷洜涓簊tatic娌℃湁this鎸囬拡錛屼絾鏄痗onst淇グthis鎸囬拡錛屾墍浠?..
     錛?1錛夊浣曚慨鏀瑰父閲忥紵
          鏈夋椂鍊欐垜浠嵈涓嶅緱涓嶅綾誨唴鐨勬暟鎹繘琛屼慨鏀癸紝浣嗘槸鎴戜滑鐨勬帴鍙e嵈琚0鏄庝簡const錛岄偅璇ユ庝箞澶勭悊鍛紵鎴戝榪欎釜闂鐨勭湅娉曞涓嬶細
           1錛夋爣鍑嗙敤娉曪細mutable
              class A
              {
               public:
                      A(int i=0):test(i)        { }
                      void SetValue(int i)const { test=i; }
               private:
                      mutable int test;   file://榪?/font>閲屽鐞嗭紒
               }錛?br>           2錛夊己鍒惰漿鎹細const_cast
               class A
               {
               public:
                      A(int i=0):test(i)        { }
                      void SetValue(int i)const
                      { const_cast <int>(test)=i; }//榪欓噷澶勭悊錛?br>               private:
                      int test;  
               }錛?br>            3錛夌伒媧葷殑鎸囬拡錛歩nt*
               class A
              {
               public:
                      A(int i=0):test(i)        { }
                      void SetValue(int i)const
                      { *test=i; }
               private:
                      int* test;   file://榪?/font>閲屽鐞嗭紒
               }錛?br>            4錛夋湭瀹氫箟鐨勫鐞?br>              class A
              {
               public:
                      A(int i=0):test(i)        { }
                      void SetValue(int i)const
                      { int *p=(int*)&test; *p=i; }//榪欓噷澶勭悊錛?br>               private:
                      int test;  
               }錛?br>                娉ㄦ剰錛岃繖閲岃櫧鐒惰鍙互榪欐牱淇敼錛屼絾緇撴灉鏄湭瀹氫箟鐨勶紝閬垮厤浣跨敤錛?br>             5錛夊唴閮ㄥ鐞嗭細this鎸囬拡
              class A
              {
               public:
                      A(int i=0):test(i)        { }
                      void SetValue(int i)const
                      { ((A*)this)->test=i; }//榪欓噷澶勭悊錛?br>               private:
                      int test;  
               }錛?br>             6錛夋渶鍙︾被鐨勫鐞嗭細絀洪棿甯冨眬
               class A
               {
                public:
                      A(int i=0):test(i),c('a') {  }
                private:
                      char c;
                      const int test;
                };
                int main()
                {
                    A a(3);
                    A* pa=&a;
                    char* p=(char*)pa;    
                    int*  pi=(int*)(p+4錛夛紱//鍒╃敤杈圭紭璋冩暣
                    *pi=5;                 file://姝?/font>澶勬敼鍙樹簡test鐨勫鹼紒
                    return 0;
                 }
        铏界劧鎴戠粰鍑轟簡6涓柟娉曪紝浣嗘槸鎴戝彧鏄兂璇存槑濡備綍鏇存敼錛屼絾鍑轟簡絎竴縐嶇敤娉曚箣澶栵紝鍙﹀5縐嶇敤娉曪紝鎴戜滑騫朵笉鎻愬★紝涓嶈鍥犱負鎴戣繖涔堝啓浜嗭紝浣犲氨榪欎箞鐢紝鍚﹀垯錛屾垜鐪熸槸瑕佽浜哄瓙寮熶簡錛氾級
     錛?2錛夋渶鍚庢垜浠潵璁ㄨ涓涓嬪父閲忓璞$殑鍔ㄦ佸垱寤恒?br>           鏃㈢劧緙栬瘧鍣ㄥ彲浠ュ姩鎬佸垵濮嬪寲甯擱噺錛屽氨鑷劧鍙互鍔ㄦ佸垱寤猴紝渚嬪錛?br>           const int* pi=new const int(10);
           榪欓噷瑕佹敞鎰?鐐癸細
           1錛塩onst瀵硅薄蹇呴』琚垵濮嬪寲錛佹墍浠?10)鏄笉鑳藉灝戠殑銆?br>           2錛塶ew榪斿洖鐨勬寚閽堝繀欏繪槸const綾誨瀷鐨勩?br>           閭d箞鎴戜滑鍙笉鍙互鍔ㄦ佸垱寤轟竴涓暟緇勫憿錛?br>           絳旀鏄惁瀹氱殑錛屽洜涓簄ew鍐呯疆綾誨瀷鐨勬暟緇勶紝涓嶈兘琚垵濮嬪寲銆?br>           榪欓噷鎴戜滑蹇借浜嗘暟緇勬槸綾葷被鍨嬬殑錛屽悓鏍峰浜庣被鍐呴儴鏁扮粍鍒濆鍖栨垜浠篃鍋氬嚭浜嗚繖鏍風殑蹇借錛屽洜涓鴻繖娑夊強鍒版暟緇勭殑闂錛屾垜浠互鍚庡啀璁ㄨ銆?br>



瀹濇潐 2007-10-26 08:31 鍙戣〃璇勮
]]>
<杞?gt;dll璇︾粏浠嬬粛http://www.shnenglu.com/robinson119/archive/2007/09/04/31539.html瀹濇潐瀹濇潐Tue, 04 Sep 2007 02:46:00 GMThttp://www.shnenglu.com/robinson119/archive/2007/09/04/31539.htmlhttp://www.shnenglu.com/robinson119/comments/31539.htmlhttp://www.shnenglu.com/robinson119/archive/2007/09/04/31539.html#Feedback0http://www.shnenglu.com/robinson119/comments/commentRss/31539.htmlhttp://www.shnenglu.com/robinson119/services/trackbacks/31539.html闃呰鍏ㄦ枃

瀹濇潐 2007-09-04 10:46 鍙戣〃璇勮
]]>
8-28妯℃澘http://www.shnenglu.com/robinson119/archive/2007/08/30/31197.html瀹濇潐瀹濇潐Thu, 30 Aug 2007 02:47:00 GMThttp://www.shnenglu.com/robinson119/archive/2007/08/30/31197.htmlhttp://www.shnenglu.com/robinson119/comments/31197.htmlhttp://www.shnenglu.com/robinson119/archive/2007/08/30/31197.html#Feedback0http://www.shnenglu.com/robinson119/comments/commentRss/31197.htmlhttp://www.shnenglu.com/robinson119/services/trackbacks/31197.html妯℃澘鏄噸鐢ㄦ満鍒剁殑涓縐嶅伐鍏鳳紝鍙互瀹炵幇綾誨瀷鍙傛暟鍖栵紝鍗蟲妸綾誨瀷瀹氫箟涓哄弬鏁幫紝瀹炵幇浠g爜鍙噸鐢ㄦс?/span>

 

F錛氬畯瀹氫箟涔熷彲浠ュ疄鐜伴噸鐢紝涓轟粈涔堜笉浣跨敤瀹忥紵

Q錛氬畯閬垮紑C++綾誨瀷媯鏌ユ満鍒訛紝涓や釜涓嶅悓綾誨瀷鍙傛暟涔嬮棿鐨勬瘮杈冨皢浼氬鑷撮敊璇?/span>

 

妯℃澘錛屾ā鏉垮嚱鏁幫紝妯℃澘綾誨拰瀵硅薄涔嬮棿鐨勫叧緋匯?/span>

妯℃澘

錛堝嚱鏁版ā鏉垮拰綾繪ā鏉匡級

妯℃澘鍑芥暟

妯℃澘綾?/span>

瀵硅薄

綆ご浠h〃瀹炰緥鍖?/span>

 

妯℃澘

錛堝嚱鏁版ā鏉垮拰綾繪ā鏉匡級

妯℃澘鍑芥暟

妯℃澘綾?/span>

瀵硅薄

 

渚嬪錛?/span>

C++exams\template_max

妯℃澘褰㈠弬灝?/span>T瀹炰緥鍖栫殑鍙傛暟銆?/span>

鍑芥暟妯℃澘鏄竴涓笉瀹屽叏鐨勫嚱鏁幫紝棣栧厛闇瑕佸皢妯℃澘褰㈠弬T瀹炰緥鍖栦負紜畾鐨勭被鍨嬨傝繖涓被鍨嬪彲浠ユ槸棰勫畾涔夌殑錛屼篃鍙互鏄敤鎴瘋嚜瀹氫箟銆?/span>

 

妯℃澘鍑芥暟鐨勫紓甯?/span>

1 鍏堣皟鐢ㄩ『搴忛伒寰粈涔堢害瀹氾紵

錛?/span>1錛夊鎵劇被鍨嬪畬鍏ㄥ尮閰嶇殑鍑芥暟銆?/span>

錛?/span>2錛夊鎵懼嚱鏁版ā鏉匡紝瀹炰緥鍖栧悗錛屼駭鐢熷尮閰嶇殑妯℃澘鍑芥暟銆?/span>

錛?/span>3錛夎嫢錛?/span>1錛夛紙2錛夊け璐ワ紝灝濊瘯浣庝竴綰х殑瀵瑰嚱鏁伴噸杞界殑鏂規硶銆備緥濡傦紝閫氳繃綾誨瀷杞崲銆?/span>

錛?/span>4錛夛紙1錛夛紙2錛夛紙3錛夐兘涓哄尮閰嶏紝鍒欐槸涓涓敊璇?/span>

 

2 鍏堜簡瑙d簡榪欐牱鐨勭害瀹氾紝灝卞緢瀹規槗鐞嗚В浠ヤ笅錛?/span>

鐢ㄩ潪妯℃澘鍑芥暟閲嶈澆鍑芥暟妯℃澘錛屽彧澹版槑闈炴ā鏉跨被鍑芥暟鐨勫師鍨嬶紝涓嶇粰鍑哄嚱鏁頒綋錛岃屽嚱鏁頒綋鍊熺敤鍑芥暟妯℃澘鐨勫嚱鏁頒綋銆?/span>

渚嬪錛?/span>

template <class T>

T max( T x, T y)

{

         return( x > y )? x : y;

}

int max( int, int);

//int max 閲嶈澆浜嗗嚱鏁版ā鏉跨殑鍑芥暟浣擄紱

int i;

char c;

max錛?/span>i, c錛?/span>;

 

 

3 瀹氫箟涓涓畬鏁寸殑鏈夊嚱鏁頒綋鐨勯潪妯℃澘鍑芥暟銆?/span>

姣斿錛?/span>max(char, char)鏃訛紝涓婇潰鐨勫嚱鏁版ā鏉夸笉鑳芥瘮杈冩瘮涓涓瓧絎︽洿闀跨殑瀛楃涓蹭簡銆?/span>

鎵浠ワ紝鍍忎竴鑸殑閲嶈澆鍑芥暟涓鏍峰畾涔夈?/span>

char *max( char *x, char *y )

{

         return ( strcmp(x, y) > 0 ) ? x 錛?/span>y錛?/span>

}

char * max閲嶈澆浜嗗嚱鏁版ā鏉匡紝褰撹皟鐢ㄤ負錛?/span>

max ( “abcd”, “efgh” ); 灝嗘墽琛屾鍑芥暟銆?/span>



瀹濇潐 2007-08-30 10:47 鍙戣〃璇勮
]]>
08-22http://www.shnenglu.com/robinson119/archive/2007/08/30/31194.html瀹濇潐瀹濇潐Thu, 30 Aug 2007 02:33:00 GMThttp://www.shnenglu.com/robinson119/archive/2007/08/30/31194.htmlhttp://www.shnenglu.com/robinson119/comments/31194.htmlhttp://www.shnenglu.com/robinson119/archive/2007/08/30/31194.html#Feedback0http://www.shnenglu.com/robinson119/comments/commentRss/31194.htmlhttp://www.shnenglu.com/robinson119/services/trackbacks/31194.html濡傛灉涓嶆兂璁╁埆浜轟嬌鐢ㄧ紪璇戝櫒緙栧啓鏋勯犳嫹璐濆拰璧嬪煎嚱鏁幫紝鍙互澹版槑涓虹鏈夛細

     class A

     {

       private:

         A(const A &a);                   // 縐佹湁鐨勬嫹璐濇瀯閫犲嚱鏁?span lang=EN-US>

         A & operate =(const A &a);  // 縐佹湁鐨勮祴鍊煎嚱鏁?span lang=EN-US>

     };

 

濡傛灉鏈変漢璇曞浘緙栧啓濡備笅紼嬪簭錛?/span>

     A  b(a); // 璋冪敤浜嗙鏈夌殑鎷瘋礉鏋勯犲嚱鏁?span lang=EN-US>

     b = a;        // 璋冪敤浜嗙鏈夌殑璧嬪煎嚱鏁?span lang=EN-US>

緙栬瘧鍣ㄥ皢鎸囧嚭閿欒錛屽洜涓哄鐣屼笉鍙互鎿嶄綔A鐨勭鏈夊嚱鏁般?/span>

浣嗘槸鎬庢牱鎵嶈兘浣跨敤鏋勯犳嫹璐濆拰璧嬪煎嚱鏁板憿錛?/span>

铏氭嫙鍑芥暟浣跨敤錛?/span>C++exams\destructor

 

鍦ㄧ紪鍐欐淳鐢熺被鐨勮祴鍊煎嚱鏁版椂錛屾敞鎰忎笉瑕佸繕璁板鍩虹被鐨勬暟鎹垚鍛橀噸鏂拌祴鍊箋備緥濡傦細

C++exams\base_operator



瀹濇潐 2007-08-30 10:33 鍙戣〃璇勮
]]>
08-14 String綾?/title><link>http://www.shnenglu.com/robinson119/archive/2007/08/30/31193.html</link><dc:creator>瀹濇潐</dc:creator><author>瀹濇潐</author><pubDate>Thu, 30 Aug 2007 02:31:00 GMT</pubDate><guid>http://www.shnenglu.com/robinson119/archive/2007/08/30/31193.html</guid><wfw:comment>http://www.shnenglu.com/robinson119/comments/31193.html</wfw:comment><comments>http://www.shnenglu.com/robinson119/archive/2007/08/30/31193.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/robinson119/comments/commentRss/31193.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/robinson119/services/trackbacks/31193.html</trackback:ping><description><![CDATA[     鎽樿: 瀹氫箟錛?     class String      {        public:          String(const char *str = NULL);  ...  <a href='http://www.shnenglu.com/robinson119/archive/2007/08/30/31193.html'>闃呰鍏ㄦ枃</a><img src ="http://www.shnenglu.com/robinson119/aggbug/31193.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/robinson119/" target="_blank">瀹濇潐</a> 2007-08-30 10:31 <a href="http://www.shnenglu.com/robinson119/archive/2007/08/30/31193.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>08-13澶嶄範http://www.shnenglu.com/robinson119/archive/2007/08/30/31192.html瀹濇潐瀹濇潐Thu, 30 Aug 2007 02:28:00 GMThttp://www.shnenglu.com/robinson119/archive/2007/08/30/31192.htmlhttp://www.shnenglu.com/robinson119/comments/31192.htmlhttp://www.shnenglu.com/robinson119/archive/2007/08/30/31192.html#Feedback0http://www.shnenglu.com/robinson119/comments/commentRss/31192.htmlhttp://www.shnenglu.com/robinson119/services/trackbacks/31192.html 

鏋愭瀯鍑芥暟

鏋勯犲嚱鏁板垵濮嬪寲琛細鏋勯犲嚱鏁扮壒孌婄殑鍒濆鍖栨柟寮?#8220;鍒濆鍖栬〃杈懼紡琛?#8221;錛堢畝縐板垵濮嬪寲琛級銆?/p>

鍒濆鍖栬〃浣嶄簬鍑芥暟鍙傛暟琛ㄤ箣鍚庯紝鍗村湪鍑芥暟浣?{} 涔嬪墠銆傝繖璇存槑璇ヨ〃閲岀殑鍒濆鍖栧伐浣滃彂鐢熷湪鍑芥暟浣撳唴鐨勪換浣曚唬鐮佽鎵ц涔嬪墠銆?/p>

瑙勫垯

u       濡傛灉綾誨瓨鍦ㄧ戶鎵垮叧緋伙紝媧劇敓綾誨繀欏誨湪鍏跺垵濮嬪寲琛ㄩ噷璋冪敤鍩虹被鐨勬瀯閫犲嚱鏁般?/p>

u       綾葷殑const甯擱噺鍙兘鍦ㄥ垵濮嬪寲琛ㄩ噷琚垵濮嬪寲錛屽洜涓哄畠涓嶈兘鍦ㄥ嚱鏁頒綋鍐呯敤璧嬪肩殑鏂瑰紡鏉ュ垵濮嬪寲銆?/p>

u       綾葷殑鏁版嵁鎴愬憳鐨勫垵濮嬪寲鍙互閲囩敤鍒濆鍖栬〃鎴栧嚱鏁頒綋鍐呰祴鍊間袱縐嶆柟寮忥紝榪欎袱縐嶆柟寮忕殑鏁堢巼涓嶅畬鍏ㄧ浉鍚屻?/p>

鏁堢巼

1 鍐呴儴鎴愬憳錛?/p>

鍒濆鍖栬〃鍜屽嚱鏁頒綋鍐呰祴鍊奸兘鍙互錛屼絾鏁堢巼涓嶅畬鍏ㄧ浉鍚岋紝浣嗗悗鑰呮洿涓烘竻鏅扮洿瑙傘?/p>

渚嬪瓙錛?/p>

class F

{

 public:

    F(int x, int y);        // 鏋勯犲嚱鏁?/p>

 private:

    int m_x, m_y;

    int m_i, m_j;

}

F::F(int x, int y)

 : m_x(x), m_y(y)          

{

   m_i = 0;

   m_j = 0;

}

F::F(int x, int y)

{

   m_x = x;

   m_y = y;

   m_i = 0;

   m_j = 0;

}

紺轟緥9-2(c) 鏁版嵁鎴愬憳鍦ㄥ垵濮嬪寲琛ㄤ腑琚垵濮嬪寲     紺轟緥9-2(d) 鏁版嵁鎴愬憳鍦ㄥ嚱鏁頒綋鍐呰鍒濆鍖?/p>

涓ょ鏂瑰紡鏁堢巼鍖哄埆涓嶅ぇ銆?/p>

 

2 闈炲唴閮ㄦ垚鍛橈細

鍙兘鐢ㄥ垵濮嬪寲琛紝鎻愰珮鏁堢巼銆?/p>

渚嬪瓙錛?/p>

    class A

{…

    A(void);                // 鏃犲弬鏁版瀯閫犲嚱鏁?/p>

    A(const A &other);      // 鎷瘋礉鏋勯犲嚱鏁?/p>

    A & operate =( const A &other); // 璧嬪煎嚱鏁?/p>

}錛?/p>

 

    class B

    {

     public:

        B(const A &a); // B鐨勬瀯閫犲嚱鏁?/p>

     private: 

        A m_a;         // 鎴愬憳瀵硅薄

};

姣旇緝涓庡垎鏋愶細

B::B(const A &a)

 : m_a(a)          

{

   …

}

B::B(const A &a)

{

m_a = a;

}

1 B綾繪瀯閫犲嚱鏁扮殑鍒濆鍖栭噷錛岃皟鐢ㄤ簡A綾葷殑鎷瘋礉鏋勯犲嚱鏁般?/p>

2 B綾繪瀯閫犲垵濮嬪寲閲岋紝闅愯棌浜嗕互涓嬪嚑涓楠わ細

鍏堝垱寤轟簡a瀵硅薄錛岃皟鐢ㄤ簡A綾葷殑鏃犲弬鏁版瀯閫犲嚱鏁幫紱

鎶奱璧嬪肩粰m_a錛岃皟鐢ㄤ簡A綾葷殑璧嬪煎嚱鏁幫紱

 

娣卞叆鎺㈣錛?/p>

鏋勯犲拰鏋愭瀯鐨勬搴忥紵

鏋勯犱粠鏈娣卞鐨勫熀綾誨紑濮嬬殑錛屽厛涓灞傚眰璋冪敤鍩虹被鐨勬瀯閫犲嚱鏁幫紝鐒跺悗璋冪敤鎴愬憳瀵硅薄鐨勬瀯閫犲嚱鏁般?/p>

鑰屾瀽鏋勫嚱鏁頒弗鏍兼寜鐓ф瀯閫犲嚱鏁扮浉鍙嶇殑嬈″簭鎵ц錛岃嬈″簭鍞竴錛屼互渚胯緙栬瘧鍣ㄨ嚜鍔ㄦ墽琛屾瀽鏋勫嚱鏁般?/p>

鐗瑰埆涔嬪鏄紝鎴愬憳瀵硅薄鍒濆鍖栨搴忎笉鍙楁瀯閫犲嚱鏁板垵濮嬪寲琛ㄦ搴忓獎鍝嶏紝鐢卞湪綾諱腑澹版槑鐨勬搴忓喅瀹氥傝岀被澹版槑鏄敮涓鐨勶紝鏋勯犲嚱鏁板嵈鍙兘鏈夊涓紝鎵浠ユ湁澶氫釜涓嶅悓嬈″簭鍑芥暟鍒濆鍖栬〃銆傚鏋滄寜鐓ф瀯閫犲嚱鏁扮殑嬈″簭鏋勯狅紝閭d箞瑙f瀽鍑芥暟涓嶈兘寰楀埌鍞竴鐨勯嗗簭銆?/p>

瀹濇潐 2007-08-30 10:28 鍙戣〃璇勮
]]>
example1http://www.shnenglu.com/robinson119/archive/2007/08/20/30436.html瀹濇潐瀹濇潐Mon, 20 Aug 2007 09:01:00 GMThttp://www.shnenglu.com/robinson119/archive/2007/08/20/30436.htmlhttp://www.shnenglu.com/robinson119/comments/30436.htmlhttp://www.shnenglu.com/robinson119/archive/2007/08/20/30436.html#Feedback2http://www.shnenglu.com/robinson119/comments/commentRss/30436.htmlhttp://www.shnenglu.com/robinson119/services/trackbacks/30436.html#include <iostream>
using namespace std;
#include <stdio.h>

#define OTL_ORA7 // Compile OTL 3.1/OCI7
#include <otlv4.h> // include the OTL 4 header file

otl_connect db; // connect object

void insert()
// insert rows into table
{
 otl_stream o(50, // buffer size
              "insert into test_tab values(:f1<float>,:f2<char[31]>)",
                 // SQL statement
              db // connect object
             );
 char tmp[32];

 for(int i=1;i<=100;++i){
  sprintf(tmp,"Name%d",i);
  o<<(float)i<<tmp;
 }
}

void select()
{
 otl_stream i(50, // buffer size
              "select * from test_tab where f1>=:f<int> and f1<=:f*2",
                 // SELECT statement
              db // connect object
             );
   // create select stream
 
 float f1;
 char f2[31];

 i<<8; // assigning :f = 8
   // SELECT automatically executes when all input variables are
   // assigned. First portion of output rows is fetched to the buffer

 while(!i.eof()){ // while not end-of-data
  i>>f1>>f2;
  cout<<"f1="<<f1<<", f2="<<f2<<endl;
 }

 i<<4; // assigning :f = 4
   // SELECT automatically executes when all input variables are
   // assigned. First portion of output rows is fetched to the buffer

 while(!i.eof()){ // while not end-of-data
  i>>f1>>f2;
  cout<<"f1="<<f1<<", f2="<<f2<<endl;
 }

}

int main()
{
 otl_connect::otl_initialize(); // initialize OCI environment
 try{

  db.rlogon("scott/tiger"); // connect to Oracle

  otl_cursor::direct_exec
   (
    db,
    "drop table test_tab",
    otl_exception::disabled // disable OTL exceptions
   ); // drop table

  otl_cursor::direct_exec
   (
    db,
    "create table test_tab(f1 number, f2 varchar2(30))"
    );  // create table

  insert(); // insert records into table
  select(); // select records from table

 }

 catch(otl_exception& p){ // intercept OTL exceptions
  cerr<<p.msg<<endl; // print out error message
  cerr<<p.stm_text<<endl; // print out SQL that caused the error
  cerr<<p.var_info<<endl; // print out the variable that caused the error
 }

 db.logoff(); // disconnect from Oracle

 return 0;

}



瀹濇潐 2007-08-20 17:01 鍙戣〃璇勮
]]>
OTL 4.0, OTL concepthttp://www.shnenglu.com/robinson119/archive/2007/08/20/30435.html瀹濇潐瀹濇潐Mon, 20 Aug 2007 08:58:00 GMThttp://www.shnenglu.com/robinson119/archive/2007/08/20/30435.htmlhttp://www.shnenglu.com/robinson119/comments/30435.htmlhttp://www.shnenglu.com/robinson119/archive/2007/08/20/30435.html#Feedback4http://www.shnenglu.com/robinson119/comments/commentRss/30435.htmlhttp://www.shnenglu.com/robinson119/services/trackbacks/30435.htmlOTL stream concept

Any SQL statement, PL/SQL block or a stored procedure call is characterized by its input / output [variables].

Example 1. A SELECT statement has scalar input variables that are used in the WHERE clause of the statement. The SELECT statement also defines output columns. Potentially, the output columns are vector parameters since the SELECT statement may return multiple rows.

Example 2. An INSERT statement writes data into a table, i.e. it has input parameters. Same is true for UPDATE statemements.

Example 3. A DELETE statement deletes rows from a table. Deletion criteria needs to be entered, thus the DELETE statement has input.

Example 4. A stored procedure may have input and/or output parameters. Usually, stored procedure parameters are scalars. There is a special case, though: stored procedure returning a referenced cursor (Oracle) or a result set (MS SQL Server or Sybase).

Example 5. An arbitrary PL/SQL block may have input or/and output parameters that may be either scalars or vectors.

Industrial strength database servers have bulk (or array) operations:

  • bulk INSERT
  • bulk UPDATE
  • bulk DELETE
  • bulk SELECT

Therefore, parameters in INSERT/UPDATE/DELETE statement may be vectors if the statement is performed in bulk.

The picture is clear: any interaction with SQL or its procedural extension can be treated as a black box with input and/or output. It does not matter what the black box does inside (according to the definition of a black box). What matters is the input wires that send signals into the box and the output wires that receive signals from the box:

Some of the wires may be both input and output.

Why not combine the concept of data streams and SQL? Instead of multiplying constructs and making database API's too convoluted, why not unify and simplify them? The OTL gives an answer to those questions and the answer is the otl_stream class.

Since a SQL statement may be done in bulk, the otl_stream is a buffered stream. Conceptually, the otl_stream has two separate buffers: input and output. The input buffer is comprised of all input variables put together. Respectively, the output buffer is comprised of all output variables put together.

C++ streams are usually manipulated via operator >> and operator <<. The stream reference is on the left of the operator symbol:

   s>>variable;
s<<variable;

The double arrow shows the direction in which data goes:

  • >> -- from the stream into the data container (variable)
  • << -- from the data container (variable) into the stream

OTL streams are similar to buffered C++ streams . A SQL statement or stored procedure call is opened as an ordinary buffered stream. The logic of the OTL stream operations remains the same as the C++ stream operations with the only exception -- the OTL stream has separate input and output buffers which may overlap.

The OTL stream has a flush function for flushing its input buffer when the buffer gets full and a collection of >> and << operators for reading and writing objects of different data types. The most important advantage of the OTL streams is their unified interface to SQL statements and stored procedure call of any kind. This means that the application developer needs to remember just a few syntactical constructs and function names which he already got familiar with when he started working with C++ streams.

Inside the OTL stream there is a small parser for parsing declarations of bind variables and their data types. There is no need to declare C/C++ host variables and bind them with placeholders by special bind function calls. All necessary buffers are created dynamically inside the stream. The stream just needs to be opened for reading and writing values.

The OTL stream interface requires use of the OTL exceptions. This means that potentially any OTL stream operation can throw an exception of the otl_exception type. In order to intercept the exception and prevent the program from aborting, wrap up the OTL stream code with the corresponding try & catch block.

The functioning of the otl_stream is pretty much automatic: when all of the input variables of the stream are defined (in other words, the input buffer is filled out), it triggers the block box inside the stream to execute. The output buffer gets filled out in the process of the execution of the black box. After the execution is finished, the output values can be read from the stream. If it is a SELECT statement and it returns more rows than the output buffer can hold, after the whole output buffer is read, then the stream automatically fetches the next bacth of rows into the output buffer.



瀹濇潐 2007-08-20 16:58 鍙戣〃璇勮
]]>
OTL 4.0, Introductionhttp://www.shnenglu.com/robinson119/archive/2007/08/20/30434.html瀹濇潐瀹濇潐Mon, 20 Aug 2007 08:55:00 GMThttp://www.shnenglu.com/robinson119/archive/2007/08/20/30434.htmlhttp://www.shnenglu.com/robinson119/comments/30434.htmlhttp://www.shnenglu.com/robinson119/archive/2007/08/20/30434.html#Feedback0http://www.shnenglu.com/robinson119/comments/commentRss/30434.htmlhttp://www.shnenglu.com/robinson119/services/trackbacks/30434.htmlIntroduction This document describes the Oracle, Odbc and DB2-CLI Template Library, Version 4.0 (OTL 4.0). OTL 4.0 is a C++ library based on templates. It integrates all of the previous releases into one library.

OTL 4.0 was designed as a combination of a C++ template framework and OTL-adapters. The framework is a generic implementation of the concept of OTL streams. The OTL-adapters are thin wrappers around the database APIs and are used as class type parameters to be substituted into the template framework.

OTL 4.0 covers the functionality of a whole database API with just a handful of concrete classes: otl_stream, otl_connect, otl_exception, otl_long_string, and several template PL/SQL (Oracle) table container classes, generated from the template framework and the OTL-adapters.

The OTL code gets expanded into direct database API function calls, so it provides ultimate performance, reliability and thread safety in multi-processor environments as well as traditional batch programs. OTL 4.0, being a template library, is highly portable since it is self-sufficient and compact enough.

OTL 4.0 is ANSI C++ compliant (ANSI C++ typecasts, clean templatized code, etc.), tightly integrated with the Standard Template Library (STL) via so-called STL-compliant stream iterators, and natively supports the STL std::string's in otl_stream's.

The current version of the OTL supports Oracle 7 (natively via OCI7), Oracle 8 (natively via OCI8), Oracle 8i (natively via OCI8i), Oracle 9i (natively via OCI9i), Oracle 10g (natively via OCI10g), DB2 (natively via DB2 CLI), ODBC 3.x as well as ODBC 2.5 compliant data sources in MS Windows and Unix (e.g. Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, Interbase / Firebird, PostgreSQL, SQLite, SAP/DB, TimesTen, MS ACCESS, etc.). The list of supported database backends is constantly growing.



瀹濇潐 2007-08-20 16:55 鍙戣〃璇勮
]]>
08-10 鍐呰仈鍑芥暟http://www.shnenglu.com/robinson119/archive/2007/08/13/29886.html瀹濇潐瀹濇潐Mon, 13 Aug 2007 02:24:00 GMThttp://www.shnenglu.com/robinson119/archive/2007/08/13/29886.htmlhttp://www.shnenglu.com/robinson119/comments/29886.htmlhttp://www.shnenglu.com/robinson119/archive/2007/08/13/29886.html#Feedback0http://www.shnenglu.com/robinson119/comments/commentRss/29886.htmlhttp://www.shnenglu.com/robinson119/services/trackbacks/29886.html鍐呰仈鍑芥暟錛氭棦澧炲姞瀹夊叏鎬э紝鍙堝彲浠ヨ皟鐢ㄧ被鐨勬暟鎹垚鍛樸?/span>

鏁?/span>C++涓紝鐢ㄥ唴鑱斿彇浠f墍鏈夊畯錛屼絾鍦?/span>Debug鐗堟湰涓紝assert鏄緥澶栥?/span>

assert涓嶄駭鐢熶換浣曞壇浣滅敤錛岃皟鐢ㄥ嚱鏁頒細寮曡搗鍐呭瓨銆佷唬鐮佺殑鍙樺姩錛屾墍浠?/span>assert鏄畯銆?/span>

鍐呰仈鏍煎紡錛?/span>

     void Foo(int x, int y);    

     inline void Foo(int x, int y)    // inline涓庡嚱鏁板畾涔変綋鏀懼湪涓璧?span lang=EN-US>

     {

        

     }

鐢ㄤ簬瀹炵幇鐨勫叧閿瓧錛岃岄潪鐢ㄤ簬澹版槑鐨勫叧閿瓧銆?/span>

鍦ㄧ被涓殑瑙勮寖鏍煎紡錛?/span>

class A

     {

public:

         void Foo(int x, int y)錛?span lang=EN-US>

     }

     // 瀹氫箟鏂囦歡

     inline void A::Foo(int x, int y)

{

}

浠涔堟儏鍐典笉閫傚悎浣跨敤鍐呰仈錛?/span>

1 鍐呰仈鍑芥暟浠g爜杈冮暱錛屽鑷村唴瀛樻秷鑰楄緝楂樸?/span>

2 鍐呰仈鍑芥暟鍖呮嫭寰幆錛屾墽琛屽唴鑱斿嚱鏁頒唬鐮佹瘮璋冪敤鍑芥暟鐨勫紑閿澶с?/span>

F錛氫負浠涔堟瀯閫犲拰瑙f瀽鍑芥暟涓嶄嬌鐢ㄥ唴鑱旓紵

Q錛氬洜涓烘瀽鏋勫嚱鏁板彲鑳?#8220;闅愯棌”涓浜涜涓猴紝渚嬪鎵ц鍩虹被鎴栨垚鍛樺璞$殑鏋愭瀯榪囩▼銆?/span>

鏈夋椂鍊欑紪璇戝櫒浼氳嚜鍔ㄥ彇娑堜竴浜涗笉鍊煎緱鐨勫唴鑱旓紝鎵浠ュ湪澹版槑鏃朵笉鍐?/span>inline鏄悎鐞嗙殑銆?/span>



瀹濇潐 2007-08-13 10:24 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
              欧美精品videossex性护士| 亚洲毛片在线观看| 免费久久99精品国产自| 日韩亚洲欧美一区| 亚洲一区二区三区高清不卡| 一区二区视频欧美| 日韩性生活视频| 国一区二区在线观看| 亚洲美女一区| 一色屋精品视频在线观看网站| 亚洲国产精品嫩草影院| 国产伦精品一区二区三区视频黑人 | 亚洲精品美女91| 国产精品一区二区三区四区五区| 久久亚洲精品视频| 欧美大片在线看免费观看| 久久av红桃一区二区小说| 久久亚洲一区二区| 亚洲欧美春色| 欧美sm视频| 久久综合色婷婷| 国产精品初高中精品久久| 亚洲第一视频网站| 狠狠色伊人亚洲综合成人| 一区二区三区国产在线| 亚洲国产一区在线| 香蕉久久夜色精品| 亚洲一区www| 欧美日本簧片| 欧美激情一区三区| 国语精品一区| 亚洲欧美中文另类| 亚洲嫩草精品久久| 欧美日韩免费在线观看| 欧美国产综合视频| 在线视频国内自拍亚洲视频| 中日韩视频在线观看| 在线一区视频| 欧美日本一道本在线视频| 欧美寡妇偷汉性猛交| 在线观看亚洲视频| 欧美在线电影| 久久精品99久久香蕉国产色戒| 国产精品yjizz| a91a精品视频在线观看| 99精品视频免费观看| 欧美激情在线有限公司| 亚洲第一久久影院| 亚洲美女中出| 欧美日韩精品三区| 亚洲精品一区二区三区99| 亚洲欧洲一区二区三区| 久久综合色8888| 蜜臀av性久久久久蜜臀aⅴ四虎| 狂野欧美一区| 欧美jizzhd精品欧美巨大免费| 国内精品久久久久伊人av| 久久久精品一区二区三区| 欧美成人精品福利| 国产精品女主播在线观看| 亚洲影院色无极综合| 亚洲精品日韩在线观看| 欧美性大战久久久久| 亚洲精品国产精品国自产观看浪潮| 亚洲一二三四久久| 国产精品videossex久久发布| 久久超碰97人人做人人爱| 欧美在线网址| 亚洲人午夜精品免费| 欧美电影免费网站| 亚洲综合第一| 久久久久在线观看| 在线精品一区二区| 国产精品久久久久久久午夜片| 99热免费精品| 久久久高清一区二区三区| 亚洲第一区在线观看| 欧美日韩三级| 午夜欧美不卡精品aaaaa| 久久爱www.| 欧美成人国产| 亚洲一区视频在线观看视频| 欧美插天视频在线播放| 亚洲精品视频一区二区三区| 国产精品捆绑调教| 久久麻豆一区二区| 一区二区激情视频| 久久人人爽人人爽| 夜夜爽夜夜爽精品视频| 国产一区二区三区奇米久涩| 欧美freesex交免费视频| 亚洲午夜精品福利| 欧美暴力喷水在线| 亚洲麻豆一区| 国产精品福利影院| 在线视频一区二区| 欧美黄色影院| 欧美一区二区三区精品电影| 亚洲欧洲在线观看| 国产亚洲一区二区精品| 欧美色另类天堂2015| 久久久久久久久久看片| 亚洲午夜电影| 亚洲黄色影片| 久久国产精品99国产| 国产精品欧美一区喷水| 午夜欧美大片免费观看| 亚洲高清在线视频| 国产免费观看久久黄| 欧美日韩精品一二三区| 久热成人在线视频| 久久成人18免费观看| 亚洲天堂视频在线观看| 亚洲精品国久久99热| 夜夜爽www精品| 国产精品国产三级国产aⅴ浪潮| 欧美视频在线一区二区三区| 欧美成人激情在线| 麻豆91精品| 久久青草久久| 久久久国产午夜精品| 午夜精品偷拍| 午夜精品久久久久久久男人的天堂| 91久久在线播放| 欧美成人在线免费视频| 久久综合电影| 久久综合久久综合久久综合| 久久精品国产亚洲精品| 小处雏高清一区二区三区| 亚洲午夜久久久| 国产在线播放一区二区三区| 欧美伦理影院| 久久久久久久激情视频| 欧美巨乳在线观看| 欧美精品一区二区三区久久久竹菊 | 国产目拍亚洲精品99久久精品 | 久久夜色精品亚洲噜噜国产mv | 久久久免费精品视频| 久久久之久亚州精品露出| 久久爱91午夜羞羞| 亚洲黄色小视频| 日韩午夜激情av| 一本久道综合久久精品| 国产精品99久久久久久人| 亚洲一区二区三区影院| 亚洲欧美日韩国产| 欧美诱惑福利视频| 久久久久久久尹人综合网亚洲| 久久婷婷成人综合色| 亚洲深夜福利| 亚洲日本欧美| 久久精品官网| 欧美激情小视频| 日韩视频免费看| 亚洲午夜视频在线| 久久国产一区| 欧美高清一区| 欧美午夜电影在线观看| 国产性色一区二区| 亚洲激情在线观看| 国产在线精品二区| 影音先锋日韩资源| 国产精品99久久久久久久久| 欧美一区二区高清| 久久久久久日产精品| 久久综合九色综合网站| 亚洲激精日韩激精欧美精品| 一区二区三区|亚洲午夜| 香蕉久久a毛片| 欧美精品一区视频| 国产欧美日本| 亚洲人午夜精品| 欧美一级专区| 亚洲经典视频在线观看| 日韩亚洲不卡在线| 久久精品视频亚洲| 国产精品二区影院| 亚洲国产精选| 欧美一级一区| 亚洲电影免费观看高清| 亚洲一区国产视频| 亚洲综合导航| 欧美第十八页| 亚洲天堂成人| 久久国产精品99精品国产| 午夜日韩福利| 欧美在线free| 亚洲午夜一区二区三区| 国产精品毛片va一区二区三区| 1024欧美极品| 欧美中在线观看| 亚洲毛片一区二区| 男女精品视频| 怡红院av一区二区三区| 香蕉成人伊视频在线观看| 久久国产天堂福利天堂| 毛片精品免费在线观看| 亚洲图片在线观看| 欧美国产精品专区| 亚洲国内在线|