锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
2銆乸rintf錛堬級鍙彉鍙傛暟濡備綍瀹炵幇
3銆佹爣鍑嗘ā鏉垮簱vector榪藉姞鏁版嵁濡備綍瀹炵幇銆傛槸搴曞眰濡備綍瀹炵幇錛屼笉鑳界敤鐜版湁鐨勪笢涓溿?
4銆佽繕鏈夛紝java鐨勫瀮鍦炬敹闆嗘満鍒跺浣曞疄鐜頒負浠涔堬紵濡傛灉鏄綘鑷繁瀹炵幇鍨冨溇鏀墮泦鏈哄埗錛屽浣曞疄
鐜幫紵 鐢ㄤ粈涔堟暟鎹粨鏋勩?
5銆佷簩鍙夋帓搴忔爲鍜屽搱甯岃〃閭d釜鏌ユ壘鏁堢巼楂橈紝瀹炵敤浜巔da 銆?
6銆?net鐨勫簳灞傚疄鐜版満鍒躲?
7銆佽繘紼嬮棿閫氫俊濡備綍瀹炵幇銆?
8銆佽繕鏈夎凱浠i棶棰橈紝浠涔堥棶棰樼敤榪唬錛岃凱浠e湪鎿嶄綔緋葷粺涓浣曞疄鐜扮殑 銆?
9銆佸浣曚氦鎹袱涓彉閲忥紝涓嶈兘鐢ㄤ腑闂村彉閲忋?
10銆乧涓巆++static鍑芥暟鐨勫尯鍒紵錛燂紵
11銆乧onst 鍑芥暟鐨勪綔鐢紝濡備綍瀹炵幇閽╁瓙鍑芥暟銆?
12銆佷袱灞傚閿欐妧鏈庝箞瀹炵幇錛?
13銆佸啓鍑哄嚱鏁版寚閽堬紝鍑芥暟榪斿洖鎸囬拡錛宑onst鎸囬拡錛屾寚鍚慶onst鐨勬寚閽堬紝鎸囧悜const鐨刢onst鎸囬拡.
14銆佸嚱鏁拌皟鐢ㄥ浣曞疄鐜幫紝娉ㄦ剰浠涔堥棶棰樸?
15銆佹寚閽堝拰寮曠敤鐨勫樊鍒紝
16銆佹嫹璐濇瀯閫犲嚱鏁板浣曞疄鐜幫紝浠涔堟儏鍐典笅浼氱敤鍒般?br />
]]>
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <fstream>聽聽
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
using namespace std;
int main(int argc, char *argv[])
{
聽聽聽 if(argc<3)
聽聽聽 {
聽聽聽聽聽聽聽 cout<<"鍙傛暟閿欒"<<endl;
聽聽聽聽聽聽聽 cout<<"<CMD> <FileNameSrc> <FileNameDis>"<<endl;
聽聽聽聽聽聽聽 exit(-1);
聽聽聽 }
聽聽聽
聽聽int nFileSize=0;
//璇誨嚭浜岃繘鍒舵枃浠剁殑澶у皬nFileSize
聽聽struct stat fFileMesg;
聽聽stat(argv[1],&fFileMesg);
聽聽cout<<fFileMesg.st_size<<endl;
聽聽nFileSize=fFileMesg.st_size;
聽
//鐢ㄤ簩榪涘埗鏍煎紡鎵撳紑璇誨啓鏂囦歡聽
聽聽ofstream ifs(argv[2],ios::binary);
聽聽ifstream ofs(argv[1],ios::binary);
聽 聽if(!ifs)
聽聽聽 {
聽聽聽聽 聽聽cout<<"鎵撳紑璇誨彇鏂囦歡["<<argv[1]<<"]澶辮觸"<<endl;
聽聽聽聽 聽聽system("PAUSE");
聽聽聽聽 聽聽return -1;
聽聽聽聽 }
聽聽if(!ofs)
聽聽聽 {
聽聽聽聽 聽聽cout<<"鎵撳紑鍐欏叆鏂囦歡["<<argv[2]<<"]澶辮觸"<<endl;
聽聽聽聽 聽聽system("PAUSE");
聽聽聽聽 聽聽return -1;
聽聽聽 }
//鍔ㄦ佺敵璇風紦鍐插尯錛岀紦鍐插尯澶у皬涓烘枃浠跺ぇ灝?br />聽聽聽 unsigned char *NewBuffer=new unsigned char[nFileSize];
//鎶婁簩榪涘埗鏂囦歡嫻佽鍐欏埌緙撳啿鍖轟腑
聽聽聽 ofs.read((char *)NewBuffer, sizeof(char)*nFileSize);
//鎶婄紦鍐插尯鍐欏叆鍒版枃浠朵腑
聽聽聽 ifs.write((char *)NewBuffer, sizeof(char)*nFileSize);
聽聽聽 system("PAUSE");
//閲婃斁緙撳啿鍖哄拰鍏抽棴鏂囦歡嫻?br />聽聽聽 ifs.close();
聽聽聽 ofs.close();
聽聽聽 delete NewBuffer;
聽聽聽 return EXIT_SUCCESS;
}
絎簩錛氫嬌鐢ㄥ己鍒惰漿鎹㈡寚閽堝洓涓洿鎺ヨ鍙?/font>
#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <fstream>聽聽
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
using namespace std;
int main(int argc, char *argv[])
{
聽聽聽 if(argc<3)
聽聽聽 {
聽聽聽聽聽聽聽 cout<<"鍙傛暟閿欒"<<endl;
聽聽聽聽聽聽聽 cout<<"<CMD> <FileNameSrc> <FileNameDis>"<<endl;
聽聽聽聽聽聽聽 exit(-1);
聽聽聽 }
聽聽聽
聽int nFileSize=0;
//璇誨嚭浜岃繘鍒舵枃浠剁殑澶у皬nFileSize
聽struct stat fFileMesg;
聽stat(argv[1],&fFileMesg);
聽cout<<fFileMesg.st_size<<endl;
聽nFileSize=fFileMesg.st_size;
聽
//鐢ㄤ簩榪涘埗鏍煎紡鎵撳紑璇誨啓鏂囦歡聽
聽ofstream ifs(argv[2],ios::binary);
聽ifstream ofs(argv[1],ios::binary);
聽 if(!ifs)
聽聽聽 {
聽聽聽聽 cout<<"鎵撳紑璇誨彇鏂囦歡["<<argv[1]<<"]澶辮觸"<<endl;
聽聽聽聽 system("PAUSE");
聽聽聽聽 return -1;
聽聽聽聽 }
聽if(!ofs)
聽聽聽 {
聽聽聽聽 cout<<"鎵撳紑鍐欏叆鏂囦歡["<<argv[2]<<"]澶辮觸"<<endl;
聽聽聽聽 system("PAUSE");
聽聽聽聽 return -1;
聽聽聽聽 }
//浣跨敤int鍨嬪己鍒惰漿鎹㈠洓涓瓧鑺傚洓涓瓧鑺傝鍙柭?br />聽int nTmp=5;
聽int nCount=0;
聽while(!ofs.eof())
聽{
聽聽ofs.read((char*)(&nTmp), sizeof(nTmp));
//gcount()鍑芥暟鍙互榪斿洖read璇誨彇鐨勭洿鎺ユ暟
聽聽nCount+=ofs.gcount();
聽聽ifs.write((char*)(&nTmp), sizeof(nTmp));
聽}
//鍏抽棴鏂囦歡嫻?br />聽 ifs.close();
聽 ofs.close();
聽 system("PAUSE");
聽 return EXIT_SUCCESS;
}
銆銆銆奀++璇█璁捐涓庢紨鍖栥?榪欐湰涔︿篃鏄垜鍚屾椂鎷ユ湁涓嫳涓ょ増鐨勪袱鏈功涔嬩竴(鍙﹀涓鏈槸銆婅璁℃ā寮忋?銆傚鏋滃湪寰楀埌涓婇潰鐨勯偅鏈功涔嬪悗浣犻渶瑕佺浜屾湰錛岄偅涔堝湪鎴戠湅鏉ヨ繖灝辨槸浣犵殑閫夋嫨錛屼綔鑰呭悓鏍鋒槸Bjarne錛屼粬灝嗗湪榪欐湰涔︿腑鍛婅瘔浣燙++鐨勮搗婧愪笌鍙戝睍錛岃璦鍘熷垯涓庢湰璐紝鍚勭鐗規у姞鍏ョ殑鐞嗙敱鍜岃冮噺錛屼互鍙婂嚑涔庝竴鍒囧叧浜嶤++鏈夎叮鐨勬晠浜嬨傛垜闃呰榪囦腑鑻變袱鐗堬紝閮芥槸寮虹儓鎺ㄨ崘銆?/font>
銆銆銆奀++鏍囧噯紼嬪簭搴撱?鍦ˋMAZON涓婇潰鍏充簬C++涔︾睄璇勮鏈涓虹伀鏆寸殑涓鏈傚叏涔﹀浜庢爣鍑嗙▼搴忓簱鐨勪粙緇嶅彲璋撴繁鍏ユ祬鍑猴紝鑰屼笖鍏ㄤ功閮芥槸浠庡疄闄呰繍鐢ㄥ嚭鍙戯紝涔︿腑渚嬪瓙綆鍗曞嵈闈炲父璇存槑闂錛屽姞涓婁竴浜?/font> 鍥捐〃 鐨勯檲鍒楋紝浣垮叾姒傚康鍗佸垎娓呮櫚錛岃屼笖浠庢墜鍐屽拰瀛︿範涓ゆ柟闈㈢湅閮芥湁鍏跺瓨鍦ㄤ環鍊箋傚己鐑堟帹鑽愩?/font>
銆銆銆奅FFECTIVE C++ 涓枃鐗堛?鏃犻』澶氳錛屽湪浠諱綍C++涔︾睄鎺ㄨ崘鐩綍涓兘鍙互鎵懼埌榪欐湰涔︾殑韜獎錛岀洓鍚嶄箣涓嬪繀鏃犺櫄澹備富瑕佸己璋冪殑鏄繍鐢–++鐨勫悇縐嶇壒鎬х殑鏃跺欐墍蹇呴』娉ㄦ剰鐨勫湴鏂癸紝浠ュ強涓浜涙瘮杈冮氱敤鐨勮璁℃墜孌點傚叾鐭皬綺炬倣鐨勮璦鑷劧闈炲父閫傚悎蹇妭濂忕殑鐜頒唬椋庢牸錛屼釜浜哄氨鍗佸垎鍠滄Meyer鐨勫啓浣滄柟寮忋傚己鐑堟帹鑽愩?/font>
銆銆銆奙ORE EFFECTIVE C++ 涓枃鐗堛?鍋氫負涓婃湰涔︾殑濮愬綃囷紝涓鏍風殑鍐欎綔椋庢牸錛屼竴鏍風殑鍐欎綔鐩殑銆傚彧鏄釜浜鴻涓哄拰鍏?/font> 濮愬 鐩告瘮錛屽瓨鍦ㄥ樊璺濓紝涓昏鏄俊鎭噺娌℃湁銆奅FFECTIVE C++ 涓枃鐗堛嬮偅涔堝ぇ錛屼富瑕佽鍒頒簡涓浜汣++鐨勮璁℃儻鐢ㄦ墜娉曘傛帹鑽愩?/font>
銆銆銆奀++ PRIMER 涓枃鐗堛?鍚屾牱鏄嚭鑷ぇ甯堜箣鎵嬶紝浣滆匧IPPMAN錛屼綔涓烘棭鏈烠++緙栬瘧鍣ㄧ殑瀹炵幇鑰呬箣涓錛屽涓嶤++鐨勪簡瑙d互鍙婅濡備綍璁哄簭閮芥湁鑷繁鐨勭嫭鍒拌瑙c傚仛涓篊++鐨勭櫨縐戝叏涔﹀拰銆奀++紼嬪簭璁捐璇█銆嬫湁鐫涓鏍風殑鍦頒綅銆備絾鏄墠鑰呮洿寮鴻皟鐨勬槸C++鐨勮娉曞拰鍏惰涔夛紝鑰屽悗鑰呭垯鏄互濡備綍鐢–++榪涜鍚堢悊璁捐鍋氫負鎻忓彊鐨勪腑蹇冦傚叏涔︽瀯鎬濆崄鍒嗗閥濡欙紝涔︾殑涓寮濮嬪氨鐩存帴榪涘叆C++鐨勪富棰橈紝鍓嶉潰浜旂珷閮界敤綾昏璁′竴涓暟鎹粨鏋勶紝璁╄鑰呭畬鍏ㄦ槑鐧戒簡鍚勭鐢ㄦ埛瀹氫箟綾誨瀷鎵浠h〃鐨勬娊璞¤兘鍔涳紝鐒跺悗鐩存帴榪涘叆絎叚绔犳爣鍑嗗簱涓殑瀹瑰櫒綾伙紝榪欐牱鐨勮璁¤璇昏呭崄鍒嗘竻妤氱殑寤虹珛瀹瑰櫒鍜岀被榪欎袱涓狢++涓崄鍒嗛噸瑕佺殑姒傚康銆傝繖鏍風殑璁捐閽堝鏈変竴瀹氬熀紜鐨凜++璇昏呮潵璇村彲浠ヨ鏄潪甯告湁鏁堟灉鐨勩備絾鏄浜庡垵瀛﹁呮潵璇達紝榪欑‘瀹炰笉鏄竴鏈悎閫傜殑涔︾睄錛屽洜涓轟竴涓婃潵澶鐨勫悕璇嶄細鎶婂垰鍒氭帴瑙++鐨勪漢鍚撶潃鐨勩傛帹鑽愩?/font>
銆銆銆奀++娌夋濆綍銆?闈炲父鏈夌壒鐐圭殑涓鏈功錛屽叏涔﹀亣璁捐鑰呭凡緇忛氭檽C++璇█錛岄噸鐐瑰憡璇夎鑰匔++鐨勬蹇典互鍙婁竴浜汣++鐨勮璁℃墜孌碉紝姣斿鐢–++鍒板簳涓轟粈涔堜細姣擟鎴栬呭叾浠栬繃紼嬭璦鏇村ソ?(涔︿腑緇欏嚭鐨勭瓟妗堟槸錛屽洜涓哄彧鏈夊璞℃墠鏈夎兘鍔涗繚鎸佷竴瀹氱殑鐘舵侊紝鑰岀畻娉曟病鏈夎繖鏍風殑鑳藉姏)錛屽浣曡繘琛屾娊璞℃暟鎹被鍨嬬殑紼嬪簭璁捐錛屽浣曠悊瑙e鎬侊紝濡備綍閫氳繃浠g悊闅愯棌緇ф壙錛屽浣曡繘琛屽紩鐢ㄦ妧鏁幫紝涓轟簡鏁堢巼濡備綍榪涜緙撴椂鎷瘋礉錛屼互鍙婃ā鏉挎妧鏈槸濡備綍鍙戝睍婕旇繘鏈鍚庢瀯鎴愭垚STL搴撶殑銆傞槄璇繪劅瑙夊拰銆奀++紼嬪簭璁捐璇█銆嬩竴鏍鳳紝鎬濇兂鎬ч潪甯稿己錛岃榪欐牱鐨勪功寰堢瘡錛岃剳瀛愬繀欏諱竴鐩存濊冮棶棰橈紝鎬濊冧綔鑰呴噷闈㈡彁鍑虹殑闂鍜屼粬鎻愬嚭鐨勮В鍐蟲柟寮忋傝繖鏈功鏈澶х殑鐗圭偣鏄潪甯哥洿鎺ョ殑鎶奀++璇█鐨勬牳蹇冩毚闇插嚭鏉?----涓夌鎶借薄妯″瀷鍜屾瀬鍏惰璦璁炬柦鏈韓瀵硅繖涓夌鎶借薄妯″瀷鐨勬敮鎸併傝屻奀++娌夋濆綍銆嬬粰鎴戠殑鏇存繁灞傛濊冩槸浠涔堟墠鏄繍鐢–++鏈鍚堢悊鐨勬柟寮忋傛帹鑽愩?/font>
銆銆銆奀++ STL涓枃鐗堛?寰堟湸瀹烇紝涓嶈姳淇忥紝浣嗘槸浠峰煎緢楂樸備釜浜鴻涓哄叾涓昏浠峰間綋鐜板湪浠ヤ笅鍑犱釜鏂歸潰:1錛屽浜嶴TL鐨勫疄鐜板叧閿甶terator涓鑸兘浣跨敤浜嗕袱縐嶆柟寮忔弿鍙欙紝涓縐嶆瘮杈冭佸紡鐨勫嚱鏁版柟娉曪紝涓縐嶆槸鏂扮殑?traits鎶宸э紝榪欐牱璇昏呭彲浠ラ潪甯告竻妤氱殑鐭ラ亾鎶鏈殑婕旇繘銆?錛屾彁渚涗簡涓涓猄TL LITE鐗堟湰錛岄槄璇昏繖鏍風殑浠g爜瀵硅嚜宸辯殑鎻愰珮闈炲父澶с?錛屼功涓彁渚涚殑嫻嬭瘯妯″潡瀵逛簬璇昏呮潵璇翠篃鏄潪甯告湁鐨勪竴绔狅紝瀵逛簬鎯蟲墿灞昐TL鐨勶紝鍙互鎸夌収涓婇潰鎻愪緵鐨勬柟娉曟祴璇曡嚜宸辯殑STL緇勪歡銆傜己鐐?瑁呰姣旇緝綺楃硻錛屼笌澶у笀涔嬩綔鐨勫湴浣嶄笉鐩哥О銆傛帹鑽?/font>
銆銆銆奀++ PRIMER PLUS 涓枃鐗堛?涓鏈濇兂鎬т笉鏄緢寮猴紝鎶宸фт笉鏄緢寮虹殑涔︼紝浣嗘槸瀵逛簬鍒濆鑰呮潵璇撮潪甯稿悎閫傜殑涔︺傚叾涓澶氳搴忔柟寮忛兘鍜屽叿浣撳寲錛屾諱綋鏉ヨ錛岃繖鏈功鏄垜鐪嬭繃鐨凜++涔︾睄閲岄潰鏈鍚堥傚垵瀛﹁呯殑銆傛帹鑽愩?/font>
銆銆銆婃繁搴︽帰绱++瀵硅薄妯″瀷銆?榪欎篃鏄竴鏈瘮杈冪壒鍒殑涔︼紝鍛婅瘔浣犵紪璇戝櫒鏄浣曞畨鎺掑鐞嗗璞$殑鍐呭瓨絀洪棿鐨勶紝浠ュ強涓浜汷O鐗規ф槸濡備綍瀹炵幇鐨勩備笉璁や負榪欐槸涓鏈珻++蹇呴』璇葷墿錛岀畻鏄鍚庤鐗╁簲璇ユ瘮杈冨悎閫傚惂錛屽洜涓烘湁鏃墮棿浜嗚ВC++鐨凮O瀹炵幇榪樹笉濡傝姳鐐規椂闂存悶娓呮OO鐞嗚鐨勬湰璐ㄦ蹇?type theory銆傛帹鑽愩?/font>
銆銆銆奀++璁捐鏂版濈淮鈥斺旀硾鍨嬬紪紼嬩笌璁捐妯″紡涔嬪簲鐢ㄣ?鍙皳C++涓殑濂囦功銆傝繖鏍風殑涓鏈功錛屽緢闅捐浜哄仛鍑烘紜殑璇勪環涓庢帹鑽愭寚鏁?灝ゅ叾鏄互鎴戣繖涓疄鐢ㄥ拰浜虹敓鏈氨搴旇浜箰涓轟漢鐢熻鐨勪漢鏉ヨ~:)錛屽洜涓哄叏涔︽墍浠h〃鐨勬濇兂鍓嶅崼鍒頒簡鏈夌偣涓嶅垏瀹為檯鐨勫湴姝ワ紝妯″紡+娉涘瀷鈥斿涔堥珮闆呯殑緇勫悎銆傛垜涓漢鐨勮鐐規槸錛屽彧鏈変竴閮ㄥ垎浜洪渶瑕侀槄璇繪涔︼紝浠栦滑灝辨槸鎵璋撶殑real c++ fans錛屾殏涓斾笉鎻怌++鏈韓鏄惁閬囧埌浜嗗洶闅撅紝灝卞叾涔︿腑鎵浠h〃鐨勮璁℃濇兂錛屽浜嶤++娌℃湁涓鐐規劅鎯呯殑紼嬪簭鍛?鎰熸儏灝辨槸浠ョ埍濂戒負鍩虹錛岃屼笉鏄互鏀掗挶涓哄墠鎻?錛屾垜鎯沖浜庤繖鏍風殑璁捐鎶鏈諱細鏈夋檿鐨勬劅瑙夛紝鑰屼竴鑸▼搴忓憳澶氬崐閮戒笉浼氬枩嬈㈣繖鏍風殑鎰熻~:)銆傛帹鑽愩?/font>
銆銆銆婂璞℃彮縐?Java銆丒iffel鍜孋++銆?浠庝功鍚嶅氨鍙互鐪嬪嚭榪欐湰涔︿笉浠呬粎鍜孋++鏈夊叧緋匯傚彲浠ヨ鍏ㄤ功灝辨槸瀵笴++鐨勪竴嬈℃壒鍒ゅ惂(涔︿篃璧鋒簮涓庝綔鑰呯殑涓綃囨壒鍒++鐨勬枃绔?銆傛湁鏃跺欏惉鍚彟澶栦竴縐嶅0闊沖鑷繁淇濇寔娓呴啋鐨勫ご鑴戞槸闈炲父鏈夊府鍔╃殑錛屽寰呬竴涓漢錛屽寰呬竴鏈功浠ュ強瀵瑰緟涓闂ㄧ▼搴忚璁¤璦閮芥槸濡傛銆傝繖鏈功濂借薄涓嶆槸寰堢伀錛屽ぇ姒傝窡鍏跺浼犱笉鏄緢鍒頒綅錛屾垨鑰呭悓鑳藉悓鏃朵簡瑙h繖涓夐棬璇█騫舵瘮杈冨叧蹇冭繖浜涜璦娣卞眰嬈$殑浼樼暐鐨勮鑰呮瘮杈冨皯鏈夊叧緋誨惂錛屽湪鎴戠湅鏉ヨ繖鏈功鍖呭惈浜嗚澶氬璞′笌綾誨瀷鏂歸潰鐨勭悊璁猴紝鏈涓哄嚭褰╃殑灝辨槸浣滆呮姄浣廈jarne鐨勨滃湪C++涓竴涓被灝辨槸涓涓被鍨嬧濊繖鏍風殑鈥滈敊璇濊█璁虹嫚鎵圭殑璁鴻瘉榪囩▼銆傜湅榪欐湰涔﹀彟澶栦竴涓ソ澶勬槸鑳芥暀浼氬ぇ瀹惰濡備綍鍘誨悎鐞嗙殑杈╅┏鑷繁鐨勫鎵媬:)銆傛帹鑽愩?/font>
銆銆銆婂ぇ瑙勬āC++紼嬪簭璁捐銆?涔﹀湪鎵嬩笂寰堜箙浜嗭紝鍙竴鐩存病鏈変粩緇嗙湅錛岃繖涔熸槸璇勮涔嬪墠蹇呴』璇存槑鐨勩傛諱綋鐪嬫潵涔︿腑娑夊強鐨勫緢澶氫笢瑗塊兘椴滆浜庡叾浠栬鏈備笉綆MAZON涓婄殑璇勮鏄惁鏄繖鏈功姣旇緝榪囨椂錛岃搗鐮佸畠浠嬬粛鐨勮澶氬涓庢垜鏉ヨ閮芥槸鎴戞墍涓嶇煡閬撲笉浜嗚В鐨勶紝鍒漢璇磋繃鏃舵槸浠栫殑浜嬫儏銆傝屾垜錛岃繕鏄帹鑽愩?/font>
銆銆銆奡TL鍜屾硾鍨嬬紪紼嬨?闅懼緱鐨勪竴鏈叧浜庢硾鍨嬬紪紼嬬殑鐞嗗康涔︾睄錛屽悓鏍蜂篃鏄綔涓烘墜鍐屽拰瀛︿範涓ょ敤錛屼絾鏄叾鎵嬪唽涓嶆槸浣跨敤鎵嬪唽錛岃屾槸姒傚康鎵嬪唽錛屽浜庤璁¤嚜宸辯殑STL緇勪歡錛岃繖鏈功鏈夐潪甯稿ソ鐨勫府鍔╋紝铏界劧緗戜笂鏈夌瘒STL鐨勬枃妗o紝鍏朵腑鐨?0%鍐呭鍜岃繖鏈功闆峰悓錛屼絾姝や功浠嶄笉澶卞彲璇繪с傛帹鑽愩?/font>
銆銆銆奀++緙栫▼鎬濇兂 絎簩鐗堛?闈炲父涓鑸殑涔︼紝鏄殑榪欏氨鏄垜瀵硅繖鏈緢澶氫漢濂変負鍚嶈憲鐨勮瘎璁猴紝鑷充簬涓轟粈涔堟槸榪欐牱鐨勮瘎璁猴紝鎴栬呬綘涓嶇浉淇℃垜璇寸殑鏄瑙傝瘽錛屽湪浣犱拱浜嗕箣鍚庣湅瀹屽氨鐭ラ亾浜嗐備竴鑸?/font>
銆銆銆奅ssential C++涓枃鐗堛?鎬繪劅瑙夎繖鏈功瀹氫綅涓嶆槸寰堟竻妤氾紝鍥犱負瀵逛簬鍒濆鑰呮潵璇村叾寮濮嬪氨娑夊強浜嗗お澶氱殑鍚嶈瘝錛屽垵瀛﹁呯湅榪欐湰涔︼紝鍑犱箮灝變笉瑕佹寚鏈涜兘寰堝ソ鐨勫叆闂ㄣ傝屽浜庤繘闃惰呮潵璇達紝鍏跺唴瀹瑰茍鏃犳柊鎰忥紝瀵逛簬C++楂樻墜鏉ヨ錛岃繖鏍風殑灝忚鏈紝鏍規湰灝辨病鏈夐槄璇葷殑蹇呰錛屼篃璁告槸LIPPMAN+JJHOU鐨勭洓鍚嶅惂錛屼絾鎴戣寰楄繖嬈$畻鏄湁铏氬+浜唦:)銆備竴鑸?/font>
銆銆銆奡TL婧愮爜鍓栨瀽銆?渚疭IR鐨勫ぇ闄嗕袱鏈憲浣滀箣涓錛屼絾鍦ㄦ垜蹇冧腑鍏惰川閲忓ソ璞″茍涓嶅寰堝浜鴻鐨勯偅鏍峰ソ錛屽氨鍚岀被浣滃搧銆奀++ STL涓枃鐗堛嬬浉姣旇緝鍐呭鐣ョ幇鍗曡杽錛屽茍涓斾笁绔犱箣鍚庡緢澶氫笢瑗塊兘緇欎漢浠ュ爢鐮岀殑鎰熻錛岃屼笖澶ч儴鍒嗙簿褰╃殑鏉愭枡閮藉嚭鑷奡TL鍜屾硾鍨嬬紪紼嬨嬩竴涔︼紝緇欎漢鎰熻涔︿腑渚疭IR鑷繁鐨勪笢瑗垮茍涓嶅錛屼絾絎簩绔犲浜?/font> 鍐呭瓨綆$悊 鏈夊緢濂界殑璁哄彊琛ㄧ幇錛屽茍涓旇璁㈢簿鑹紝灝ゅ叾鏄偅浜涘浘鏇存槸渚疭IR鐨勬嬁鎵嬪ソ鎴忥紝浣嗘諱綋鎰熻鏈夌偣鍗庤屼笉瀹炪備竴鑸?/font>
銆銆鍚庨潰鍒楀嚭涓ゆ湰涓嶆帹鑽愮殑錛屽叿浣撳師鍥犱篃灝變笉鍐嶅垎鏋愩?/font>
銆銆銆婇珮璐ㄩ噺紼嬪簭璁捐鎸囧崡--C++/C璇█銆嬶紝銆奀++緙栫爜瑙勮寖銆?/font>
銆銆鍙﹀涓ゆ湰甯歌鐨凜++涔︾睄:
銆銆銆奅xceptional C++涓枃鐗堛嬶紝銆奙ore Exceptional C++涓枃鐗堛嬫垜鏈漢騫舵病鏈夐槄璇昏繃錛屼絾鍏跺悕澹頒笉灝忥紝鑰屼笖鍔犱箣鏇劇粡緇欐涔︿綔鑰匟erb Sutter閫氶偖浠剁殑緇忓巻錛岄偅縐嶈冭檻鍒版椂宸兘涓嶅埌24涓皬鏃剁殑鍥炰俊鐜囦互鍙婂湪淇′腑鑰愬績鐨勫鎶鏈瑙g殑鎬佸害錛屽悓鏍峰悜澶у鎺ㄨ崘榪欎袱鏈功錛屽洜涓哄湪鎴戠湅鏉erb Sutter鑳藉姏鏃犻』鑰冭檻鍔犱笂榪欐牱寰呬漢鐨勬佸害錛屽叾浣滃搧鐞嗘墍鍊煎緱澶у闃呰銆?/font>
銆銆鏄殑錛屼笂闈㈠氨鏄垜澶у崐騫存潵鐪嬭繃鐨凜++鐨勪功綾嶏紝鑲畾涓嶅皯浜鴻鍢茬瑧鎴戠殑涓功鍛嗗瓙浜唦:)錛屽叾瀹炴垜紜疄灝辨槸涓涓功鍛嗗瓙錛岃嚦浜庢槸鍚﹂渶瑕佺湅榪欎箞澶氫功錛屾垜涓漢鎰忚鏄笉闇瑕侊紝涓嶇劧鎴戣繕緇欏嚭鎺ㄨ崘絳夌駭騫蹭粈涔?閫夋嫨鑷繁闇瑕佺殑灝辨槸鏈濂姐傚紩鐢ㄦ浘緇忔湁浜鴻鍒扮殑---璇勪功鍏跺疄灝辨槸涓滃浜洪ギ姘達紝鍐鋒殩鑷煡鈥濈殑浜嬫儏銆傜湡姝g殑涔﹁瘎鍦ㄥ摢閲?鍚勮嚜鐨勫績閲屻?/font>
int main( int argc, char* argv[] )
{
聽聽聽 char pReturnUrl[100]={0};
聽聽聽 int nResault=0;
聽
聽聽聽 if(argc!=2)
聽聽聽 {
聽聽聽聽聽聽聽 printf("緙哄皯鏂囦歡鍚峔n");
聽聽聽聽聽聽聽 return -1;
聽聽聽 }
聽聽聽 nResault=CheckFileExit(argv[1]);
聽聽聽 printf("璁塊棶鏂囦歡鍚嶄負錛?s\n",argv[1]);
聽聽聽 printf("璁塊棶緇撴灉涓?%d\n",nResault);
聽聽聽 return 0;
}
鐜板湪鍘繪帀絎竴涓垚鍛樺彉閲忎負濡備笅浠g爜錛?br />#pragma pack(4)
class TestC
{
public:
銆銆char a;
銆銆short b;
銆銆char c;
};
int nSize = sizeof(TestC);
鎸夌収姝e父鐨勫~鍏呮柟寮弉Size鐨勭粨鏋滃簲璇ユ槸8錛屼負浠涔堢粨鏋滄樉紺簄Size涓?鍛紵
浜嬪疄涓婏紝寰堝浜哄#pragma pack鐨勭悊瑙f槸閿欒鐨勩?br />#pragma pack瑙勫畾鐨勫榻愰暱搴︼紝瀹為檯浣跨敤鐨勮鍒欐槸錛?br />緇撴瀯錛岃仈鍚堬紝鎴栬呯被鐨勬暟鎹垚鍛橈紝絎竴涓斁鍦ㄥ亸縐諱負0鐨勫湴鏂癸紝浠ュ悗姣忎釜鏁版嵁鎴愬憳鐨勫榻愶紝鎸夌収#pragma pack鎸囧畾鐨勬暟鍊煎拰榪欎釜鏁版嵁鎴愬憳鑷韓闀垮害涓紝姣旇緝灝忕殑閭d釜榪涜銆?br />涔熷氨鏄錛屽綋#pragma pack鐨勫肩瓑浜庢垨瓚呰繃鎵鏈夋暟鎹垚鍛橀暱搴︾殑鏃跺欙紝榪欎釜鍊肩殑澶у皬灝嗕笉浜х敓浠諱綍鏁堟灉銆?br />鑰岀粨鏋勬暣浣撶殑瀵歸綈錛屽垯鎸夌収緇撴瀯浣撲腑鏈澶х殑鏁版嵁鎴愬憳 鍜?#pragma pack鎸囧畾鍊?涔嬮棿錛岃緝灝忕殑閭d釜榪涜銆?/font>
鍏蜂綋瑙i噴
#pragma pack(4)
銆銆class TestB
銆銆{
銆銆public:
銆銆銆銆int aa; //絎竴涓垚鍛橈紝鏀懼湪[0,3]鍋忕Щ鐨勪綅緗紝
銆銆銆銆char a; //絎簩涓垚鍛橈紝鑷韓闀夸負1錛?pragma pack(4),鍙栧皬鍊鹼紝涔熷氨鏄?錛屾墍浠ヨ繖涓垚鍛樻寜涓瀛楄妭瀵歸綈錛屾斁鍦ㄥ亸縐籟4]鐨勪綅緗?br />銆銆銆銆short b; //絎笁涓垚鍛橈紝鑷韓闀?錛?pragma pack(4)錛屽彇2錛屾寜2瀛楄妭瀵歸綈錛屾墍浠ユ斁鍦ㄥ亸縐籟6,7]鐨勪綅緗?br />銆銆銆銆char c; //絎洓涓紝鑷韓闀夸負1錛屾斁鍦╗8]鐨勪綅緗?br />銆銆};
榪欎釜綾誨疄闄呭崰鎹殑鍐呭瓨絀洪棿鏄?瀛楄妭
綾諱箣闂寸殑瀵歸綈錛屾槸鎸夌収綾誨唴閮ㄦ渶澶х殑鎴愬憳鐨勯暱搴︼紝鍜?pragma pack瑙勫畾鐨勫間箣涓緝灝忕殑涓涓榻愮殑銆?br />鎵浠ヨ繖涓緥瀛愪腑錛岀被涔嬮棿瀵歸綈鐨勯暱搴︽槸min(sizeof(int),4)錛屼篃灝辨槸4銆?br />9鎸夌収4瀛楄妭鍦嗘暣鐨勭粨鏋滄槸12錛屾墍浠izeof(TestB)鏄?2銆?/font>
濡傛灉
#pragma pack(2)
class TestB
銆銆{
銆銆public:
銆銆銆銆int aa; //絎竴涓垚鍛橈紝鏀懼湪[0,3]鍋忕Щ鐨勪綅緗紝
銆銆銆銆char a; //絎簩涓垚鍛橈紝鑷韓闀夸負1錛?pragma pack(4),鍙栧皬鍊鹼紝涔熷氨鏄?錛屾墍浠ヨ繖涓垚鍛樻寜涓瀛楄妭瀵歸綈錛屾斁鍦ㄥ亸縐籟4]鐨勪綅緗?br />銆銆銆銆short b; //絎笁涓垚鍛橈紝鑷韓闀?錛?pragma pack(4)錛屽彇2錛屾寜2瀛楄妭瀵歸綈錛屾墍浠ユ斁鍦ㄥ亸縐籟6,7]鐨勪綅緗?br />銆銆銆銆char c; //絎洓涓紝鑷韓闀夸負1錛屾斁鍦╗8]鐨勪綅緗?br />銆銆};
//鍙互鐪嬪嚭錛屼笂闈㈢殑浣嶇疆瀹屽叏娌℃湁鍙樺寲錛屽彧鏄被涔嬮棿鏀逛負鎸?瀛楄妭瀵歸綈錛?鎸?鍦嗘暣鐨勭粨鏋滄槸10銆?br />//鎵浠?sizeof(TestB)鏄?0銆?/font>
鏈鍚庣湅鍘熻創錛?br />鐜板湪鍘繪帀絎竴涓垚鍛樺彉閲忎負濡備笅浠g爜錛?br />銆銆#pragma pack(4)
銆銆class TestC
銆銆{
銆銆public:
銆銆銆銆char a;//絎竴涓垚鍛橈紝鏀懼湪[0]鍋忕Щ鐨勪綅緗紝
銆銆銆銆short b;//絎簩涓垚鍛橈紝鑷韓闀?錛?pragma pack(4)錛屽彇2錛屾寜2瀛楄妭瀵歸綈錛屾墍浠ユ斁鍦ㄥ亸縐籟2,3]鐨勪綅緗?br />銆銆銆銆char c;//絎笁涓紝鑷韓闀夸負1錛屾斁鍦╗4]鐨勪綅緗?br />銆銆};
//鏁翠釜綾葷殑澶у皬鏄?瀛楄妭錛屾寜鐓in(sizeof(short),4)瀛楄妭瀵歸綈錛屼篃灝辨槸2瀛楄妭瀵歸綈錛岀粨鏋滄槸6
//鎵浠izeof(TestC)鏄?銆?/font>