c new
C++ newÓ÷¨Ïà¹Ø¾Ñé×ܽá
×÷Õß: ØýÃû, ¡¡³ö´¦:ITר¼ÒÍø,¡¡ÔðÈαà¼: лåûåû,¡¡2010-04-16 07:00
¡¡¡¡C++ ±à³ÌÓïÑÔÖÐÓÐÒ»ÖÖ½Ð×önewµÄÊõÓï¡£²»¹ýÕâÒ»¸ÅÄîÊDZȽÏÄ£ºýµÄ£¬ÓÐЩÈ˰ÑËüÀí½âΪnewº¯Êý£¬µ«ÊÇÓеÄÈËÓÖ»á°ÑËüÀí½âΪnewÔËËã·û¡£ÄÇôËüµÄÕæÕýº¬ÒåÓÖÊÇÈçºÎµÄÄØ?ÔÚÕâÀïÎÒÃǽ«»áͨ¹ý¶ÔC++ newÓ÷¨µÄ½éÉÜ£¬°ïÖú´ó¼ÒÒ»Æð·ÖÎöһϡ£
¡¡¡¡C++ ±à³ÌÓïÑÔÖÐÓÐÒ»ÖÖ½Ð×önewµÄÊõÓï¡£²»¹ýÕâÒ»¸ÅÄîÊDZȽÏÄ£ºýµÄ£¬ÓÐЩÈ˰ÑËüÀí½âΪnewº¯Êý£¬µ«ÊÇÓеÄÈËÓÖ»á°ÑËüÀí½âΪnewÔËËã·û¡£ÄÇôËüµÄÕæÕýº¬ÒåÓÖÊÇÈçºÎµÄÄØ?ÔÚÕâÀïÎÒÃǽ«»áͨ¹ý¶ÔC++ newÓ÷¨µÄ½éÉÜ£¬°ïÖú´ó¼ÒÒ»Æð·ÖÎöһϡ£
¡¡¡¡C++ newÓ÷¨Ö®Ò» newÔËËã·û
¡¡¡¡×î³£ÓõÄÊÇ×÷ΪÔËËã·ûµÄnew£¬±ÈÈ磺
¡¡¡¡string *str = new string(¡°test new¡±);
¡¡¡¡×÷ΪÔËËã·û£¬newºÍsizeofÒ»Ñù£¬ÊÇC++ÄÚÖõģ¬Äã²»ÄܶÔËü×öÈκεĸı䣬³ýÁËʹÓÃËü¡£
¡¡¡¡new»áÔÚ¶ÑÉÏ·ÖÅäÒ»¿éÄڴ棬²¢»á×Ô¶¯µ÷ÓÃÀàµÄ¹¹Ô캯Êý¡£
¡¡¡¡C++ newÓ÷¨Ö®¶þ newº¯Êý
¡¡¡¡µÚ¶þÖÖ¾ÍÊÇnewº¯Êý£¬ÆäʵnewÔËËã·ûÄÚ²¿·ÖÅäÄÚ´æÊ¹ÓõľÍÊÇnewº¯Êý£¬ÔÐÍÊÇ£º
¡¡void *operator new(size_t size);
¡¡¡¡newº¯Êý·µ»ØµÄÊÇÒ»¸övoidÖ¸Õ룬һ¿éδ¾³õʼ»¯µÄÄÚ´æ¡£ÈçÄãËù¼û£¬ÕâºÍCÓïÑÔµÄmallocÐÐΪÏàËÆ£¬Äã¿ÉÒÔÖØÔØnewº¯Êý£¬²¢ÇÒÔö¼Ó¶îÍâµÄ²ÎÊý£¬µ«ÊDZØÐë±£Ö¤µÚÒ»¸ö²ÎÊý±ØÐëÊÇsize_tÀàÐÍ£¬ËüÖ¸Ã÷ÁË·ÖÅäÄÚ´æ¿éµÄ´óС£¬C++ÔÊÐíÄãÕâô×ö£¬µ±È»Ò»°ãÇé¿öÏÂÕâÊDz»±ØÒªµÄ¡£Èç¹ûÖØÔØÁËnewº¯Êý£¬ÔÚʹÓÃnew²Ù×÷·ûʱµ÷ÓõľÍÊÇÄãÖØÔØºóµÄnewº¯ÊýÁË¡£
¡¡¡¡Èç¹ûʹÓÃnewº¯Êý£¬ºÍÓï¾ästring *str = new string(¡°test new¡±)Ïà¶ÔµÄ´úÂë´ó¸ÅÊÇÈçϵÄÑù×Ó£º
¡¡¡¡1.string *str = (string*)operator new(sizeof(string));
¡¡¡¡2.str.string(¡°test new¡±);
¡¡¡¡3.// µ±È»Õâ¸öµ÷ÓÃʱ·Ç·¨µÄ£¬µ«ÊDZàÒëÆ÷ÊÇûÓÐÕâ¸öÏÞÖÆµÄ
¡¡¡¡Õ⻹²»ËãÍ꣬»¹ÓеÚÈýÖÖµÄnew´æÔÚ¡£
¡¡¡¡C++ newÓ÷¨Ö®Èý placement new
¡¡¡¡µÚÈýÖÖ£¬placement new£¬ÕâÒ²ÊÇnew×÷Ϊº¯ÊýµÄÒ»ÖÖÓ÷¨£¬ËüÔÊÐíÄãÔÚÒ»¿éÒÑ´æÔÚµÄÄÚ´æÉÏ·ÖÅäÒ»¸ö¶ÔÏ󣬶øÄÚ´æÉϵÄÊý¾Ý²»»á±»¸²¸Ç»òÕß±»ÄãÖ÷¶¯¸Äд£¬placement newͬÑùÓÉnew²Ù×÷·ûµ÷Ó㬵÷ÓøñʽÊÇ£º
¡¡new (buffer) type(size_t size);
¡¡¡¡ÏÈ¿´¿´ÏÂÃæµÄ´úÂ룺
¡¡ 4.char str[22];
¡¡¡¡5.int data = 123;
¡¡¡¡6.int *pa = new (&data) int;
¡¡¡¡7.int *pb = new (str) int(9);
¡¡¡¡½á¹û*pa = 123(δ¸²¸ÇÔÊý¾Ý)£¬¶ø*pb = 9(¸²¸ÇÔÊý¾Ý)£¬¿ÉÒÔ¿´µ½placement
Ïà¹ØÎĵµ£º
1.ÒýÑÔ
¡¡¡¡±¾ÎĵÄд×÷Ä¿µÄ²¢²»ÔÚÓÚÌṩC/C++³ÌÐòÔ±ÇóÖ°ÃæÊÔÖ¸µ¼£¬¶øÖ¼ÔÚ´Ó¼¼ÊõÉÏ·ÖÎöÃæÊÔÌâµÄÄÚº¡£ÎÄÖеĴó¶àÊýÃæÊÔÌâÀ´×Ô¸÷´óÂÛ̳£¬²¿·ÖÊÔÌâ½â´ðÒ²²Î¿¼ÁËÍøÓѵÄÒâ¼û¡£
¡¡¡¡Ðí¶àÃæÊÔÌâ¿´ËÆ¼òµ¥£¬È´ÐèÒªÉîºñµÄ»ù±¾¹¦²ÅÄܸø³öÍêÃÀµÄ½â´ð¡£ÆóÒµÒªÇóÃæÊÔÕßдһ¸ö×î¼òµ¥µÄstrcpyº¯Êý¶¼¿É¿´³öÃæÊÔÕßÔÚ¼¼ÊõÉϾ¿¾¹´ïµ½Á ......
ÊÔÌâ5£º±àдһ¸öº¯Êý£¬×÷ÓÃÊǰÑÒ»¸öchar×é³ÉµÄ×Ö·û´®Ñ»·ÓÒÒÆn¸ö¡£±ÈÈçÔÀ´ÊÇ“abcdefghi”Èç¹ûn=2£¬ÒÆÎ»ºóÓ¦¸ÃÊÇ“hiabcdefgh”
¡¡¡¡º¯ÊýÍ·ÊÇÕâÑùµÄ£º
//pStrÊÇÖ¸ÏòÒÔ'\0'½áβµÄ×Ö·û´®µÄÖ¸Õë
//stepsÊÇÒªÇóÒÆ¶¯µÄn
void LoopMove ( char * pStr, int steps )
{
¡¡//ÇëÌî³ä...
}
¡¡¡¡½ ......
ת×Ô£ºhttp://dev.yesky.com/12/3067012.shtml
¶¯Ì¬Á¬½Ó¿âµÄ´´½¨²½Ö裺
¡¡¡¡Ò»¡¢´´½¨Non-MFC DLL¶¯Ì¬Á´½Ó¿â
¡¡¡¡1¡¢´ò¿ªFile —> New —> ProjectÑ¡ÏѡÔñWin32 Dynamic-Link Library —>sample project
¡¡¡¡—>¹¤³ÌÃû£ºDllDemo
¡¡¡¡2¡¢Ð½¨Ò»¸ö.hÎļþDllDemo.h
ÒÔÏÂÊÇÒýÓÃÆ¬¶Î£º
......
googletest C/C++ ²âÊÔ¿ò¼Ü·Ç³£ºÃÓ㬽éÉܼ°ÏÂÔØÇë¿´ http://code.google.com/p/googletest/
//============================================================================
// ʹÓà googletest ²âÊÔ¿ò¼Ü
//============================================================================
// Returns n! ......
/*
ÕâÊǸö³£¼ûµÄÃæÊÔÌâŶ£¬×ÜÖ®ÎÒÃæÊÔµÄʱºòÓöµ½¹ý£¬ µ±Ê±Ã»ÓдðÉÏÀ´
»ØÈ¥ºóÏë³öÀ´ÏÂÃæµÄ·½·¨Ò»£¬¸Ã·¨»¹Óиö¸½¼ÓÓŵ㣬¿ÉÒÔÅжϳöÁ´±íÔÚÄĸöµØ·½Ðγɻ·µÄ£¨¼´Èç¹ûÏë²ð¿ªÕâ¸ö»·£¬´ÓÄĸöµØ·½¶Ï¿ª£©¡£
ºóÀ´ÖªµÀ»¹Óиö¾µäËã·¨£¬¼´Ê¹ÓÃÁ½¸öÖ¸Õ룬һ¿ìÒ»ÂýÏòǰÊÔ̽£¬Èç¹û×îÖÕÖØºÏÔòÁ´±íÓл·£¬¹ûÈ»ÓÅÃÀµÄËã·¨¡£
*/
#inc ......