XiaoHui.net Ц»ã³ÌÐòÔ±ÂÛ̳Ê×Ò³
¹¤×÷²¢¿ìÀÖ×Å,Ö°Òµ²¢ÐÝÏÐ×Å
ѰÃεÄËêÔ´Ӳ»ÑÔÐÁ¿à¼¸Ðí£¬
²»ÎÊÊÕ»ñ¼¸¶à¡­¡­
» ÓοÍ:  ÉêÇëÐÂÓû§ | µÇ¼ | »áÔ± | ͳ¼Æ | °ïÖú » XiaoHui.Net Ц»ã³ÌÐòÔ±ÂÛ̳ | ´¿ÎÄ×Ö°æ | ȫվË÷Òý | XiaoHui.com


[ÆäËû] C++/CLIʵս¡ª¡ªHELLO

RSS ¶©Ôĵ±Ç°ÂÛ̳  

ÉÏÒ»Ö÷Ìâ ÏÂÒ»Ö÷Ìâ
     

±êÌâ: [ÆäËû] C++/CLIʵս¡ª¡ªHELLO  
 
cjbly2006
СˮÊÖ
Rank: 1



UID 30593
¾«»ª 0
»ý·Ö 5
Ìû×Ó 5
ÔĶÁȨÏÞ 10
×¢²á 2007-9-8
״̬ ÀëÏß
C++/CLIʵս¡ª¡ªHELLO

C++/CLIʵս¡ª¡ªHELLO
ʲôÊÇC++/CLI?

¡¡¡¡C++/CLIÃè»æµÄÊÇÒ»ÖÖ¶àÔª×éºÏ£¬´Ë´¦µÄ C++ µ±È»ÊÇÖ¸ Bjarne Stroustrup ÔÚ Bell ʵÑéÊÒ·¢Ã÷µÄC++±à³ÌÓïÑÔ¡£ËüÖ§³ÖËٶȺÍÖ´ÐÐ ÎļþµÄ´óС¶¼µÃµ½ÓÅ»¯µÄ¾²Ì¬¶ÔÏóÄ£ÐÍ¡£µ«³ýÁ˶ÑÄÚ´æ·ÖÅäÒÔÍ⣬Ëü²»Ö§³ÖÔËÐÐʱ³ÌÐò¶Ô¶ÔÏóµÄ¸ü¸Ä¡£ËüÔÊÐí¶Ôµ×²ã»úÆ÷½øÐÐÎÞÏÞÖÆµÄ·ÃÎÊ£¬µ«¶ÔÓÚÕýÔÚÔËÐеijÌÐòÖеĻÀàÐÍ¡¢ÒÔ¼°Ïà¹ØµÄ³ÌÐò»ù´¡¹¹Ô죬ËüµÄ·ÃÎÊÄÜÁ¦È´·Ç³£ÓÐÏÞ¡¢»òÕ߸ù±¾¾Í²»¿ÉÄÜ¡£ÎÒÔÚ΢ÈíµÄͬÊ Herb Sutter£¬Ò²ÊÇC++/CLIµÄÖ÷¼Ü¹¹Ê¦£¬ÈÏΪC++ÊÇÒ»¸ö»ìÄýÍÁÓïÑÔ¡£

¡¡¡¡¡°CLI¡±¼´¹«¹²ÓïÑÔ»ù´¡½á¹¹£¨Common Language Infrastructure£©£¬ÕâÊÇÒ»¸öÖ§³Ö¶¯Ì¬×é¼þ±à³ÌÄ£Ð͵Ķà²ã¼Ü¹¹¡£ÔÚÐí¶à·½Ã棬ËüËù±íʾµÄ¶ÔÏóÄ£ÐͺÍC++µÄÍêÈ«Ïà·´¡£ËüÊÇÒ»¸öÔËÐÐʱÈí¼þ²ã £¬Ò»¸öÐéÄâÖ´ÐÐϵͳ£¬ÔËÐÐÔÚÓ¦ÓóÌÐòºÍµ×²ã²Ù×÷ϵͳ֮¼ä¡£¶Ôµ×²ã»úÆ÷µÄ·ÃÎÊÊܵ½Ï൱ÑϸñµÄÏÞÖÆ¡£Ö§³Ö¶ÔÔËÐÐÖгÌÐòµÄ»î¶¯ÀàÐÍÒÔ¼°¹ØÁª³ÌÐòµÄ»ù´¡¹¹Ôì ½øÐдæÈ¡¡ª¡ª·¢Ïֺͽ¨¹¹¡£Ð±Ïß¡°/¡±±íʾ C++ ºÍ CLI Ö®¼äµÄÒ»Öְ󶨣¨binding£©£¬ÓйØÕâÖְ󶨵Äϸ½Ú¹¹³É±¾×¨À¸µÄ³£¹æÖ÷Ìâ¡£

¡¡¡¡ËùÒÔ£¬¶ÔÓÚ¡°Ê²Ã´ÊÇC++/CLI£¿¡±Õâ¸öÎÊÌâµÚÒ»¸ö×î½üËÆµÄ´ð°¸ÊÇ£ºËüÊǾ²Ì¬C++¶ÔÏóÄ£Ð͵½¶¯Ì¬CLI×é¼þ¶ÔÏóÄ£Ð͵ÄÒ»Öְ󶨣¬ ¼òÑÔÖ®£¬Ëü¾ÍÊÇÄãÈçºÎÓÃC++½øÐÐ.net±à³Ì£¬¶ø²»ÊÇÓÃC#»òVisual Basic.NET¡£ÏóC#ºÍCLI×Ô¼ºÒ»Ñù£¬C++/CLIÕýÔÚ¾­Àú ECMA£¨Å·ÖÞ¼ÆËã»úÖÆÔìÉÌЭ»á£© ±ê×¼»¯²¢×îÖÕÒª¾­ÀúISO±ê×¼ÈÏÖ¤¡£

¡¡¡¡¹«¹²ÓïÑÔÔËÐÐʱ£¨CLR£©ÊÇ΢Èí°æµÄCLI£¬×¨ÃÅÓÃÓÚ Windows ²Ù×÷ϵͳ£¬Í¬Ñù£¬Visual C++ 2005ÊÇC++/CLI µÄʵÏÖ¡£

¡¡¡¡µÚ¶þ¸ö½üËÆ´ð°¸ÊÇ£ºÎÒ¾õµÃC++/CLIÔÚC++ÄÚ¼¯³É.NET±à³ÌÄ£ÐÍÓëÒÔǰ±´¶ûʵÑéÊÒÔÚµ±Ê±µÄC++ÖÐÓÃÄ£°å¼¯³É·ºÐͱà³ÌÒ»ÑùÓÐÒìÇúͬ¹¤Ö®´¦¡£Á½ÖÖÇé¿öÖУ¬ÄãÔÚÏÖÓÐC++´úÂë¿âÉϵÄͶ×ÊÒÔ¼°ÄãÏÖÓеÄC++רҵ¼¼Êõ¶¼µÃµ½±£»¤¡£ÕâÊÇC++/CLIÉè¼ÆµÄÒ»¸ö»ù±¾ ÒªÇó¡£

¡¡¡¡Ñ§Ï°C++/CLI

¡¡¡¡Ò»ÖÖC++/CLIÓïÑÔµÄÉè¼ÆÓÐÈý¸ö²ãÃæ£¬ÕâÈý¸ö²ãÃæÒ²ÊÊÓÃÓÚËùÓÐÓïÑÔ£ºÓïÑÔ²ãÓï·¨µ½¹«¹²ÀàÐÍϵͳ£¨CTS£© µÄÓ³É䣻ѡÔñΪ³ÌÐòÔ±Ö±½Ó²Ù×÷¶ø¹«¿ªµÄµ×²ãCLI»ù±¾×éÖ¯½á¹¹ µÄÏêϸ³Ì¶È£»ÒÔ¼°Ñ¡ÔñÒªÌṩµÄ³¬Ô½CLIÖ±½ÓÖ§³ÖµÄ¸½¼Ó¹¦ÄÜ¡£

¡¡¡¡µÚÒ»¸ö²ãÃæÊÇËùÓÐCLIÓïÑÔÔںܴó³Ì¶ÈÉ϶¼¹²Óеģ¬µÚ¶þ¸ö²ãÃæºÍµÚÈý²ãÃæÊÇijһCLIÓïÑÔÇø±ðÓÚÆäËüÓïÑԵĵط½¡£¸ù¾ÝËùÒª½â¾öµÄÎÊÌ⣬Äã¿ÉÒÔÑ¡Ôñijһ ÖÖÓïÑÔ£¬Ò²¿ÉÒÔ½«¶àÖÖCLIÓïÑÔ½áºÏÆðÀ´¡£Ñ§Ï°C++/CLIÓïÑÔÐèÒªÕÆÎÕÕâÈý¸öÉè¼Æ²ãÃæ¡£

¡¡¡¡ÔõÑù½«C++/CLI Ó³Éäµ½CTS£¿

¡¡¡¡Á˽âµ×²ãCTS ¶ÔѧϰC++/CLI·Ç³£ÓаïÖú£¬ËüÖ÷Òª°üÀ¨Èý¸ö³£¹æÀàÀàÐÍ£º

¡¡¡¡¶à̬ÒýÓÃÀàÐÍ£¬ÆäÓÃÓÚËùÓеÄÀà¼Ì³Ð£»

¡¡¡¡·Ç¶àֵ̬ÀàÐÍ£¬ÆäÓÃÓÚʵÏÖÐèÒªÔËÐÐʱЧÂʵľßÌåÀàÐÍ£¬ÈçÊý×ÖÀàÐÍ£»

¡¡¡¡³éÏó½Ó¿ÚÀàÐÍ£¬ÆäÓÃÓÚ¶¨ÒåÒ»¸öʵÏָýӿڵÄÒ»×éÒýÓÃÀàÐÍ»òÖµÀàÐ͹²Í¬Ê¹ÓõĹ«¹²²Ù×÷¼¯£»

¡¡¡¡ÔÚÉè¼Æ·½Ã棬ËäÈ»CTSµ½Ò»×éÄÚÖõÄÓïÑÔÀàÐ͵ÄÓ³Éä¶ÔÓÚËùÓÐCLIÓïÑÔÀ´Ëµ¶¼Êǹ²Í¬µÄ£¬µ±È»£¬Ã¿Ò»ÖÖCLIÓïÑÔµÄÓï·¨¸÷²»Ïàͬ¡£ÀýÈ磬ÔÚC#ÖУ¬ÎÒÃÇ¿ÉÒÔ ÕâÑùÀ´¶¨ÒåÒ»¸ö³éÏó»ùÀà Shape£¬´ÓÕâ¸öÀàÅÉÉúÌØ¶¨µÄ¼¸ºÎÄ£ÐͶÔÏó¡£

abstract class Shape { ... } // C#

¡¡¡¡¶øÔÚC++/CLIÖУ¬¿ÉÒÔÏóÏÂÃæÕâÑùд£¬ÒÔ±íʾÍêÈ«ÏàͬµÄµ×²ãÒýÓÃÀàÐÍ£º

ref class Shape abstract { ... }; // C++/CLI

¡¡¡¡Ôڵײã IL£¨ÖмäÓïÑÔ£©ÖУ¬ÒÔÉÏÁ½ÖÖÉùÃ÷ÒÔÍêÈ«ÏàͬµÄ·½Ê½±íʾ¡£Í¬Ñù£¬ÔÚC#ÖУ¬ÎÒÃÇ¿ÉÒÔÓÃÏÂÃæµÄ´úÂëÀ´¶¨ÒåÒ»¸ö¾ßÌåµÄ Point2D Àà £º

struct Point2D { ... } // C#

¡¡¡¡¶øÔÚC++/CLIÖÐд³É£º

value class Point2D { ... }; // C++/CLI

¡¡¡¡½èÖú C++/CLI Ö§³ÖµÄÀàÀàÐͼÒ×å±íÏÖÁËÒ»ÖÖ±¾»ú·½Ê½µÄ CTS ¼¯³É¡£ËüÈ·¶¨ÁËÄãµÄÓ﷨ѡÔñ£¬ÀýÈ磺

class native {};
value class V {};
ref class R {};
interface class I {};

¡¡¡¡CTS Ò²Ö§³Öö¾ÙÀàÀàÐÍ£¬ÆäÐÐΪ·½Ê½Óë±¾»úö¾ÙÉÔ΢ÓÐÐ©Çø±ð£¬C++/CLI¶Ô¶þÕß¶¼Ìṩ֧³Ö£º

enum native { fail, pass };
enum class CLIEnum : char { fail, pass};  

¡¡¡¡Í¬Ñù£¬CTSÖ§³ÖÆä×Ô¼ºµÄÊý×éÀàÐÍ£¬ÆäÐÐΪҲÓë±¾»úÊý×éÀàÐÍÓÐÒ»¶¨²î±ð£¬Î¢ÈíͬÑù¶Ô¶þÕßÌṩ֧³Ö£º

int native[] = { 1,1,2,3,5,8 };
array£¼int£¾^ managed = { 1,1,2,3,5,8 };

¡¡¡¡ÄÇÖÖÈÏΪÈκÎÒ»ÖÖ CLI ÓïÑÔ±ÈÁíÒ»ÖÖÓïÑÔ¸ü½Ó½ü»ò¼¸ºõ¾ÍÊǵ½µ×²ãCLIµÄÓ³ÉäÊDz»¾«È·µÄ¡£Ïà·´£¬Ã¿Ò»ÖÖCLIÓïÑÔ¶¼Ö»ÊDZí´ïÁË×Ô¼º¶Ôµ×²ãCLI¶ÔÏóÄ£Ð͵ÄÒ»ÖÖ ¼û½â¡£ÔÚÏÂÒ»½ÚÄ㽫¸üÇå³þµØ¿´µ½ÕâÒ»µã¡£

¡¡¡¡CLI µÄϸ½Ú±ê×¼

¡¡¡¡ÔÚÉè¼ÆCLIÓïÑÔʱ±ØÐ뿼Âǵĵڶþ¸öÉè¼Æ²ãÃæÊÇÒª½«Ê²Ã´³Ì¶ÈµÄµ×²ãCLIʵÏÖÄ£ÐͽáºÏµ½¸ÃÓïÑÔÖС£Õâ¸öÓïÑÔ½â¾öʲôÑùµÄÎÊÌ⣿Ҫ½â¾öÕâЩÎÊÌâ±ØÐëҪʲôÑùµÄ¹¤¾ß£¿ ´ËÍ⣬¸ÃÓïÑԺܿÉÄÜÎüÒýÄÄÒ»Àà³ÌÐòÔ±£¿

¡¡¡¡ÏÂÃæ£¬ÎÒÃÇÀûÓ÷¢ÉúÔÚÍйܶÑÖеÄÖµÀàÐÍÎÊÌâ¡£ÔÚÐí¶àÇé¿öÏ£¬ÖµÀàÐÍ¿ÉÒÔÔÚÍйܶÑÖÐÕÒµ½×Ô¼º£º

¡¡¡¡Í¨¹ýÒþʽµÄ¿òÈë/¿ò³ö²Ù×÷£¨boxing£©¡ª¡ªµ±ÖµÀàÐ͵Äij¸öʵÀý±»¸³Öµ¸øÒ»¶ÔÏóʱ£¬»òÕßͨ¹ýij¸öδ±»¸ÄдµÄÖµÀàÐ͵÷ÓÃÒ»¸öÐéÄâ·½·¨Ê±£»

¡¡¡¡µ±ÖµÀàÐͱ»µ±×÷ΪÒýÓÃÀàÀàÐ͵ijÉԱʱ£»

¡¡¡¡µ±ÖµÀàÐͱ»µ±×÷CLIÊý×éÔªËØ´æ´¢Ê±£»

¡¡¡¡ÊÇ·ñÔÊÐí³ÌÐòÔ±´¦ÀíÕâÖÖÖµÀàÐ͵ØÖ·ÊÇÉè¼ÆCLIÓïÑÔʱ±ØÐëÒª½â¾öµÄÎÊÌâ¡£

¡¡¡¡´æÔÚµÄÎÊÌâ?

¡¡¡¡Î»ÓÚÍйܶÑÖеÄÈκζÔÏóÔÚÀ¬»ø»ØÊÕÆ÷½øÐÐÇåɨÊÕËõµÄ¹ý³ÌÖж¼ÓпÉÄÜÔâÓöÖØÐ·ÖÅ䣬ָÏòÕâЩ¶ÔÏóµÄÈκÎÖ¸Õë±ØÐë±»×·×Ù²¢ÔÚÔËÐÐʱµÃµ½¸üУ¬¶ø³ÌÐòÔ± ÎÞ·¨×Ô¼ºÊÖ¶¯×·×ÙËüÃÇ£¬Òò´Ë£¬Èç¹ûÄã±»ÔÊÐíÓÃij¸ö¿ÉÄÜÔÚÍйܶÑÖеÄÖµÀàÐ͵ĵØÖ·£¬ÄÇô³ýÁ˱¾»úÖ¸ÕëÍ⣬»¹ÐèÒªÒ»¸ö×·×ÙÐÎ̬µÄÖ¸Õë¡£

¡¡¡¡µ½µ×¸ÃÔõÑùȥȨºâÄØ£¿Ò»·½Ã棬ÐèÒª¿¼ÂǼò½àºÍ°²È«¡£Ö±½ÓÒýÈë¶ÔÒ»¸ö»òÒ»×é×·×ÙÖ¸ÕëµÄÖ§³Ö»áʹÓïÑÔ±äµÃ¸ü¸´ÔÓ¡£Èç¹û²»ÌṩÕâÖÖÖ§³Ö£¬ÓÉÓÚËùÐèµÄ¸´Ôӳ̶ȽµµÍ£¬´Ó¶ø¿ÉÒÔÕÒµ½µÄ³ÌÐòÔ±ÈËȺ¾Í»áÔö¼Ó¡£´ËÍ⣬ÔÊÐí³ÌÐòÔ±·ÃÎÊÕâЩÉúÃüÆÚ¶ÌÔݵÄÖµÀàÐÍ£¬ÔòÔö¼ÓÁ˳ÌÐòÔ±³ö´íµÄ¿ÉÄÜÐÔ¡£Ëý¾­Òâ»ò²»¾­ÒâµØ¶ÔÄÚ´æ×öһЩΣÏÕ¶¯×÷¡£²»Ö§³Ö×·×ÙÖ¸Õ룬¿ÉÒÔDZÔڵش´½¨½Ï°²È«µÄÔËÐÐʱ»·¾³¡£

¡¡¡¡ÁíÒ»·½Ã棬±ØÐ뿼ÂÇЧÂʺÍÁé»îÐÔ¡£Ã¿´Î½«ÖµÀàÐ͸³Öµ¸øÏàͬµÄ¶ÔÏ󣬸ÃÖµ¶¼»á·¢ÉúеĿòÈë/¿ò³ö²Ù×÷¡£ÔÊÐí·ÃÎÊÕâÖÖ¾­¹ý¿òÈë/¿ò³ö²Ù×÷µÄÖµÀàÐÍ £¬¾ÍÔÊÐíÔÚÄÚ´æÖнøÐиüвÙ×÷£¬ÕâÑù±ã¿ÉÄÜÌá¹©ÖØÒªµÄÐÔÄܸĽø¡£Ã»ÓÐijÖÖÐÎʽµÄ×·×ÙÖ¸Õ룬Ä㽫ÎÞ·¨ÓÃÖ¸ÕëËã·¨±éÀúCLIÊý×飬ÕâÒâζ×ÅCLIÊý×齫²»ÄÜ ÈÚÈëSTL£¨±ê׼ģ°å¿â£©Öеĵü´úÆ÷ģʽ£¬Ò²ÎÞ·¨Óë·ºÐÍË㷨Эͬ¹¤×÷¡£ÔÊÐí·ÃÎÊ¿òÈë/¿ò³öÖµÀàÐͽ«»á´ó´óÌá¸ßÉè¼ÆµÄÁé»îÐÔ¡£

¡¡¡¡ÔÚC++/CLI ÖУ¬Î¢ÈíÑ¡ÔñÌṩһϵÁÐÔÚÍйܶÑÖд¦ÀíÖµÀàÐ͵ÄѰַģʽ£º

int ival = 1024;
int^ boxedi = ival;

array£¼int£¾^ ia = gcnew array£¼int£¾{1,1,2,3,5,8};
interior_ptr£¼int£¾ begin = &ia[0];

value struct smallInt { int m_ival; ... } si;
pin_ptr£¼int£¾ ppi = &si.m_ival;

¡¡¡¡µäÐ굀 C++/CLI ¿ª·¢ÈËÔ±ÊÇÒ»¸ö¾­Ñé·á¸»µÄϵͳ³ÌÐòÔ±£¬ÆäÈÎÎñÊÇÌṩµ×²ã¼Ü¹¹ÒÔ¼°×÷Ϊ»ù´¡µÄºËÐÄÓ¦Óã¬ÒÔ´ËΪ»ù´¡À´¹¹½¨Î´À´¡£Ëý±ØÐë½â¾ö¿ÉÉìËõÐÔºÍÐÔÄÜÏà¹ØµÄÎÊÌ⣬²¢ÇÒ±ØÐë´Óϵͳһ¼¶À´¿´´ýµ×²ã CLI¡£Ä³ÖÖ CLI ÓïÑÔµÄϸ½Ú±ê×¼·´Ó³ÁËÆä³ÌÐòÔ±µÄÃæÃ²¡£

¡¡¡¡¸´ÔÓÐÔ±¾Éí²¢²»ÊǶÔÖÊÁ¿µÄ·ñ¶¨£¬ÈËÀàÉúÃü±Èµ¥ºËϸ°û¸´Ôӵö࣬Õ⵱Ȼ²»ÊÇÒ»¼þ»µÊ£¬È»¶ø£¬µ±µ¥Ò»¸ÅÄîµÄ±í´ï±äµÃ¸´ÔÓ»¯ÒÔºó£¬Õâ³£³£±»ÈÏΪÊÇÒ»¼þ»µÊ¡£ÔÚC++/CLIÖУ¬CLI¿ª·¢ÍŶÓÒѾ­ ³¢ÊÔÌṩһÖÖÓÅÑŵķ½Ê½À´±í´ïÒ»¸ö¸´ÔÓµÄÖ÷Ìå¡£

¡¡¡¡¸½¼Ó¹¦ÄÜ

¡¡¡¡µÚÈý¸öÉè¼Æ²ãÃæÊÇÌØ¶¨ÓïÑԲ㹦ÄÜÒª³¬¹ý±»CLIÖ±½ÓÖ§³ÖµÄ¹¦ÄÜ£¬ÕâÑù¾ÍÐèÒª½¨Á¢Ò»ÖÖÓïÑÔ²ãÖ§³ÖÓëCLIµ×²ãʵÏÖÄ£ÐÍÖ®¼äµÄÓ³Éä¡£ ÔÚijЩÇé¿öÏ£¬ÕâÊÇ×ö²»µ½µÄ£¬ÒòΪ¸ÃÓïÑÔÎÞ·¨µ÷½âCLIµÄÐÐΪ£¬ÔÚ»ùÀàµÄ¹¹Ô캯ÊýºÍÎö¹¹º¯ÊýÖнâ¾öÐ麯Êý±ãÊÇÀý×Ó¡£ÎªÁËÔÚÕâÖÖÇé¿öÖз´Ó³ISO-C++ÓïÒ壬ÐèÒªÔÚÿ¸ö»ùÀàµÄ¹¹Ô캯ÊýºÍÎö¹¹º¯ÊýÖÐ ÖØÐ°²ÅÅÐé±í¡£ÕâÊDz»¿ÉÄܵģ¬ÒòΪÐé±í²Ù×÷ÊÇÓÉÔËÐÐʱÍйܵ쬶ø·Çµ¥¶ÀµÄÓïÑÔÍйܡ£ Òò´Ë£¬ÕâÒ»Éè¼Æ²ãÃæÊÇÓÅÔ½ÐԺͿÉÐÐÐÔµÄÕÛÖС£C++/CLI ÌṩµÄ¸½¼Ó¹¦ÄÜÖ÷ÒªÓÐÈý¸ö·½Ã棺

¡¡¡¡ÒýÓÃÀàÐ͵Ä×ÊÔ´»ñÈ¡£¨Resource Acquisition£©ÐÎʽÊÇInitialization£¨RAII£©£¬ ÓÈÆäÊÇΪ±»³Æ×÷Õ¼¾ÝÏ¡ÓÐ×ÊÔ´µÄÀ¬»ø»ØÊÕÀàÐÍÈ·¶¨ÐÔÖÕÖ¹»¯£¨deterministic finalization£©Ìṩһ¸ö×Ô¶¯»¯µÄ»úÖÆ£»

¡¡¡¡ÓëC++¿½±´¹¹Ô캯ÊýºÍ¿½±´¸³Öµ²Ù×÷·ûÏà¹ØµÄÉî¶È¿½±´ÓïÒåÐÎʽ£¬µ«Ëü²»ÄÜÀ©Õ¹µ½ÖµÀàÐÍ£»

¡¡¡¡³ýÁË CLI·ºÐÍ»úÖÆÖ®Í⡪¡ªÕâÔ­À´ÊÇÎÒµÚÒ»¸öרÀ¸µÄÖ÷Ì⣬»¹ÎªCTSÀàÐÍÌṩC++Ä£°åµÄÖ±½ÓÖ§³Ö£¬ÁíÍ⣬»¹ÌṩÓÃÓÚ CLI ÀàÐ굀 STL ¿ÉÑéÖ¤°æ±¾£»

¡¡¡¡ÈÃÎÒÃÇ¿´Ò»¸ö¼òµ¥µÄÀý×Ó£ºÈ·¶¨ÐÔÖÕÖ¹»¯ÎÊÌâ¡£Óë¶ÔÏó¹ØÁªµÄÄÚ´æ±»À¬»ø»ØÊÕÆ÷»ØÊÕ֮ǰ£¬Èô´æÔÚÓëÖ®Ïà¹ØÁ¬µÄ Finalize ·½·¨£¬¸Ã·½·¨½«»á±»µ÷Óá£Äã¿ÉÒÔ°Ñ ¸Ã·½·¨¿´×÷ÊÇÒ»ÖÖ³¬¼¶Îö¹¹º¯Êý£¬ÒòΪËü²»ÒÀÀµÓڸöÔÏó³ÌÐòµÄÉúÃüÆÚ£¬Ëü±»³ÆÎªÖÕÖ¹»¯¡£µ÷Óà Finalize ·½·¨µÄʱ¼ä£¬ÉõÖÁÊÇ·ñµ÷ÓÃËüÊÇ䶨ÒåµÄ¡£Õâ¾ÍÊÇÀ¬»ø»ØÊÕÆ÷²»È·¶¨µÄÖÕÖ¹»¯²Ù×÷º¬ÒåÖ®ËùÔÚ¡£

¡¡¡¡²»È·¶¨ÐÔÖÕÖ¹»¯ÔÚ½øÐж¯Ì¬ÄÚ´æ¹ÜÀíʱ¿ÉÒÔºÜÓÐЧµØ¹¤×÷£¬µ±¿ÉÓÃÄÚ´æ¿Õ¼äÑÏÖØ²»×ãʱ£¬À¬»ø»ØÊÕÆ÷»á·¢»Ó×÷Óò¢½â¾öÎÊÌâ¡£µ«Êǵ±¶ÔÏóÉæ¼°µÄÊÇÄ³Ð©ÖØÒª×ÊÔ´£¬±ÈÈçÊý¾Ý¿âÁ¬½Ó¡¢Ä³ÖÖ ÀàÐ͵ÄËø¡¢±¾µØ¶ÑÄÚ´æÊ±£¬²»È·¶¨ÐÔÖÕÖ¹»¯µÄ±íÏÖÈ´²»¾¡ÈËÒâ¡£ÔÚÕâÖÖÇé¿öÏ£¬×îºÃÊǾ¡¿ìÊͷŲ»ÔÙÐèÒªµÄ×ÊÔ´¡£Ä¿Ç°CLI²ÉÓõĽâ¾ö°ì·¨ÊÇ£ºÄ³¸öÀàÔÚÆä IDisposable ½Ó¿ÚµÄ Dispose ·½·¨ÖÐÊÍ·Å×ÊÔ´£¬ÕâÀïµÄÎÊÌâÊÇ Dispose ÐèÒªÏÔʽµ÷Óã¬Òò´ËËü²»¿ÉÄܱ»Ö´ÐС£

¡¡¡¡C++µÄ»ù±¾Éè¼ÆÄ£Ê½ÊÇǰÊöµÄ×ÊÔ´»ñÈ¡£¨Resource Acquisition £©¼´³õʼ»¯£¨Initialization£©£¬ËüÒâζ×ÅÀàͨ¹ý¹¹Ô캯Êý »ñÈ¡×ÊÔ´£¬Ïà·´£¬Í¨¹ýÎö¹¹º¯ÊýÀ´ÊÍ·Å×ÊÔ´¡£ÔÚÀà¶ÔÏóµÄÉú´æÆÚÄÚÊÇ×Ô¶¯¹ÜÀíµÄ¡£

¡¡¡¡ÒÔÏÂÊÇÒýÓÃÀàÐÍÊÍ·Å×ÊÔ´µÄ¹ý³Ì£º

¡¡¡¡ÓÃÎö¹¹º¯ÊýѹËõÔÚÊÍ·Å×ÊÔ´¹ý³ÌÖбØÐëµÄ´úÂ룻

¡¡¡¡×Ô¶¯µ÷Óð󶨵½Àà¶ÔÏóÉú´æÆÚµÄÎö¹¹º¯Êý£»

¡¡¡¡CLIÖУ¬ÒýÓÃÀàÐ͵ÄÀàûÓÐÀàÎö¹¹µÄ¸ÅÄÒò´Ë£¬Îö¹¹º¯Êý±»Ó³Éäµ½µ×²ãʵÏÖÖÐÁíÍâµÄ¶«Î÷ÉÏ£¬±àÒëÆ÷ÔòÔÚÄÚ²¿Íê³ÉÈçÏÂת»»£º
Àà¾ß±¸Æä»ùÀàÁÐ±í£¬´Ó½Ó¿Ú IDisposable ÑÓÉì¼Ì³Ð£»

¡¡¡¡Îö¹¹º¯Êý±»×ª»»³ÉIDisposable µÄ Dispose ·½·¨£»

¡¡¡¡Õâ½ö½öÍê³ÉÁËÒ»°ë£¬»¹ÐèÒªÒ»ÖÖÎö¹¹º¯ÊýµÄ×Ô¶¯µ÷ÓÃ;¾¶¡£Ö§³ÖÒýÓÃÀàÐÍרÓõĻùÓÚ¶ÑÕ»µÄ·ûºÅ£¬Ò²¾ÍÊÇ˵ÆäÉúÃüÆÚÓëÆäÉùÃ÷µÄ·¶Î§Ïà¹ØÁª¡£±àÒëÆ÷ ÔÚÄÚ²¿×ª»»·ûºÅ£¬ÔÚÍйܶÑÖзÖÅäÒýÓöÔÏó¡£Ëæ×Å·¶Î§µÄÖÕÖ¹£¬±àÒëÆ÷²åÈëÒ»¸ö¶Ô Dispose ·½·¨µÄµ÷Ó᪡ªÓû§¶¨ÒåµÄÎö¹¹º¯Êý¡£Óë¸Ã¶ÔÏó¹ØÁªµÄʵ¼ÊÄÚ´æµÄ»ØÊÕÈÔÈ»ÔÚÀ¬»ø»ØÊÕÆ÷µÄÕÆ¿ØÖ®Ï¡£ÀýÈçÈç Figure 1 Ëùʾ¡£

¡¡¡¡C++/CLI ²»½ö½öÊÇC++µ½¹ÜÀíÊÀ½çµÄÀ©Õ¹£¬Ïà·´£¬Ëü±íÏÖÁËÒ»ÖÖÍêÈ«µÄ±à³Ì·¶Àý£¬ÀàËÆÓÚÔçÆÚ¶àÖØ¼Ì³ÐºÍ·ºÐͱà³Ì·¶Àý¼¯³Éµ½¸ÃÓïÑÔÒ»Ñù£¬ÎÒÈÏΪÕâ¸öÍŶÓÍê³ÉÁËÒ»Ïî½Ü³öµÄ¹¤×÷¡£

¡¡¡¡ÄÇô£¬ÄãÊÇÈçºÎ¿´´ý C++/CLI µÄÄØ?

¡¡¡¡C++/CLI´ú±íÁ˱¾µØºÍÍйܱà³ÌµÄ×ۺϣ¬ÔÚÕâ¸ö·´¸´¹ý³ÌÖУ¬ÕâÖÖ×ÛºÏͨ¹ý¼´x$%@x¶øÓÖµÈͬµÄÔ´Âë¼¶ºÍ¶þ½øÖÆÔªËع²Í¬ÌåÀ´Íê³É£¬°üÀ¨»ìºÏģʽ£¨±¾»úºÍCTSÀàÐ͵ÄÔ´Âë¼¶»ìºÏ£¬ÒÔ¼°±¾»úºÍCIL¶ÔÏóÎļþµÄ¶þ½øÖÆ»ìºÏ£©£¬ ±¾µØÀàÐͺÍCTSÀàÐ͵ĻìºÏ£¬ÐÂÔöÁË»ìºÏ±¾µØ¶ÔÏóºÍCIL¶ÔÏóµÄ¶þ½øÖÆÎļþ£©£¬´¿Ä£Ê½£¨±¾»úºÍCTSÀàÐ͵ÄÔ´Âë¼¶»ìºÏ£¬ËùÓбàÒë¹ýµÄ CIL ¶ÔÏóÎļþ£©£¬±¾»úÀࣨ½öͨ¹ýרÃŵİü×°Àà²Å¿ÉÒÔ²Ù¿Ø CTS ÀàÐÍ£©£¬ÒÔ¼° CTS ÀֻࣨÄÜÒÔÖ¸ÕëÐÎʽ²Ù¿Ø±¾»úÀàÐÍ£©¡£

¡¡¡¡µ±È»£¬C++/CLI ³ÌÐòÔ±Ò²¿ÉÒÔÑ¡Ôñµ¥¶ÀÓà CLI ÀàÐÍÀ´±à³Ì£¬ÔÚÕâÖÖ·½Ê½ÖÐÌṩÄܱ»¼ÄË޵ĿÉÑéÖ¤´úÂ룬±ÈÈç SQL Server 2005 ÖеĴ洢¹ý³Ì¡£

¡¡¡¡ÏÖÔÚ£¬»Øµ½Ê²Ã´ÊÇ C++/CLI µÄÎÊÌ⣬ËüÊǽøÈë.NET±à³ÌÄ£Ð͵ĵÚÒ»µÀÃż÷£¬ÓÐÁË C++/CLI£¬Äã²»½ö¾ß±¸ÁËÇ¨ÒÆ C++ Ô´´úÂë¿âµÄ;¾¶£¬Í¬Ê±»¹¿ÉÒÔÇ¨ÒÆ C++ רҵ¼¼Êõ¡£ÕâÈÃÎҸоõ·Ç³£ã«Òâ¡£³ÌÐò¿ª·¢
2007-12-5 19:47#1
²é¿´×ÊÁÏ  Blog  ·¢¶ÌÏûÏ¢  ¶¥²¿
     


  ¿É´òÓ¡°æ±¾ | ÍÆ¼ö¸øÅóÓÑ | ¶©ÔÄÖ÷Ìâ | ÊÕ²ØÖ÷Ìâ  


 


ËùÓÐʱ¼äΪ GMT+8, ÏÖÔÚʱ¼äÊÇ 2008-12-2 08:56 Powered by Discuz! 4.1.0 Çå³ý Cookies - XiaoHui.Net Ц»ã³ÌÐòÔ±ÂÛ̳ - Archiver