ÉèΪÊ×Ò³ ¼ÓÈëÊÕ²Ø

TOP

C++Ö¸ÕëʹÓ÷½·¨
2014-11-24 01:34:57 ¡¾´ó ÖРС¡¿ ä¯ÀÀ:1073´Î
Tags£ºÖ¸Õë ʹÓ÷½·¨

ÔÚÏÂÁк¯ÊýÉùÃ÷ÖУ¬ÎªÊ²Ã´ÒªÍ¬Ê±Ê¹ÓÃ*ºÍ&·ûºÅ£¿ÒÔ¼°Ê²Ã´³¡ºÏʹÓÃÕâÖÖÉùÃ÷·½Ê½ ¡¡


¡¡¡¡ void func1( MYCLASS *&pBuildingElement );


¡¡¡¡ ÂÛ̳Öо­³£ÓÐÈËÎʵ½ÕâÑùµÄÎÊÌâ¡£±¾ÎÄÊÔͼͨ¹ýһЩʵ¼ÊµÄÖ¸ÕëʹÓþ­ÑéÀ´½âÊÍÕâ¸öÎÊÌâ¡£


¡¡¡¡ ×Ðϸ¿´Ò»ÏÂÕâÖÖÉùÃ÷·½Ê½£¬È·ÊµÓеãÈÃÈËÃÔ»ó¡£ÔÚijÖÖÒâÒåÉÏ£¬¡±*¡±ºÍ¡±&¡±ÊÇÒâ˼Ïà¶ÔµÄÁ½¸ö¶«Î÷£¬°ÑËüÃÇ·ÅÔÚÒ»ÆðÓÐʲôÒâÒåÄØ£¿¡£ÎªÁËÀí½âÖ¸ÕëµÄÕâÖÖ×ö·¨£¬ÎÒÃÇÏȸ´Ï°Ò»ÏÂC/C++±à³ÌÖÐÎÞËù²»ÔÚµÄÖ¸Õë¸ÅÄî¡£ÎÒÃǶ¼ÖªµÀMYCLASS*µÄÒâ˼£ºÖ¸Ïòij¸ö¶ÔÏóµÄÖ¸Õ룬´Ë¶ÔÏóµÄÀàÐÍΪMYCLASS¡£ void func1(MYCLASS *pMyClass); ¡¡


¡¡¡¡// ÀýÈ磺 MYCLASS* p = new MYCLASS;


¡¡¡¡ func1(p);


¡¡¡¡ ÉÏÃæÕâ¶Î´úÂëµÄÕâÖÖ´¦Àí·½·¨Ïë±ØË­¶¼Óùý£¬´´½¨Ò»¸öMYCLASS¶ÔÏó£¬È»ºó½«Ëü´«Èëfunc1º¯Êý¡£ÏÖÔÚ¼ÙÉè´Ëº¯ÊýÒªÐÞ¸ÄpMyClass£º
void func1(MYCLASS *pMyClass)
¡¡¡¡ {
¡¡¡¡ DoSomething(pMyClass);
¡¡¡¡ pMyClass = // ÆäËü¶ÔÏóµÄÖ¸Õë
¡¡¡¡ }¡¡


¡¡¡¡ µÚ¶þÌõÓï¾äÔÚº¯Êý¹ý³ÌÖÐÖ»ÐÞ¸ÄÁËpMyClassµÄÖµ¡£²¢Ã»ÓÐÐ޸ĵ÷ÓÃÕߵıäÁ¿pµÄÖµ¡£Èç¹ûpÖ¸Ïòij¸öλÓÚµØÖ·0x008a00µÄ¶ÔÏ󣬵±func1·µ»Øʱ£¬ËüÈÔȻָÏòÕâ¸öÌض¨µÄ¶ÔÏó¡££¨³ý·Çfunc1ÓÐbug½«¶ÑŪÂÒÁË£¬ÍêÈ«ÓÐÕâÖÖ¿ÉÄÜ¡££©


¡¡¡¡ÏÖÔÚ¼ÙÉèÄãÏëÒªÔÚfunc1ÖÐÐÞ¸ÄpµÄÖµ¡£ÕâÊÇÄãµÄȨÀû¡£µ÷ÓÃÕß´«ÈëÒ»¸öÖ¸Õ룬Ȼºóº¯Êý¸øÕâ¸öÖ¸Õ븳ֵ¡£ÒÔÍùÒ»°ã¶¼ÊÇ´«Ë«Ö¸Õ룬¼´Ö¸ÕëµÄÖ¸Õ룬ÀýÈ磬CMyClass**¡£ MYCLASS* p = NULL;


¡¡¡¡ func1(&p);
¡¡¡¡ void func1(MYCLASS** pMyClass);
¡¡¡¡ {
¡¡¡¡ *pMyClass = new MYCLASS;
¡¡¡¡ ¡­¡­
¡¡¡¡ }¡¡¡¡


¡¡¡¡µ÷ÓÃfunc1Ö®ºó£¬pÖ¸ÏòеĶÔÏó¡£ÔÚCOM±à³ÌÖУ¬Äãµ½´¦¶¼»áÅöµ½ÕâÑùµÄÓ÷¨¨CÀýÈçÔÚ²éѯ¶ÔÏó½Ó¿ÚµÄQueryInterfaceº¯ÊýÖУº
interface ISomeInterface {
¡¡¡¡ HRESULT QueryInterface(IID &iid, void** ppvObj);
¡¡¡¡ ¡­¡­
¡¡¡¡ };
¡¡¡¡ LPSOMEINTERFACE p=NULL;
¡¡¡¡ pOb->QueryInterface(IID_SOMEINTERFACE, &p);¡¡¡¡


¡¡¡¡ ´Ë´¦£¬pÊÇSOMEINTERFACEÀàÐ͵ÄÖ¸Õ룬ËùÒÔ&p±ãÊÇÖ¸ÕëµÄÖ¸Õ룬ÔÚQueryInterface·µ»ØµÄʱºò£¬Èç¹ûµ÷Óóɹ¦£¬Ôò±äÁ¿p°üº¬Ò»¸öÖ¸ÏòеĽӿڵÄÖ¸Õë¡£


¡¡¡¡ Èç¹ûÄãÀí½âÖ¸ÕëµÄÖ¸Õ룬ÄÇôÄã¿Ï¶¨¾ÍÀí½âÖ¸ÕëÒýÓã¬ÒòΪËüÃÇÍêÈ«ÊÇÒ»»ØÊ¡£Èç¹ûÄãÏóÏÂÃæÕâÑùÉùÃ÷º¯Êý£º


¡¡¡¡ void func1(MYCLASS *&pMyClass);
¡¡¡¡ {
¡¡¡¡ pMyClass = new MYCLASS;
¡¡¡¡ ¡­¡­
¡¡¡¡ }¡¡¡¡


¡¡¡¡ Æäʵ£¬ËüºÍÇ°ÃæËù½²µÃÖ¸ÕëµÄÖ¸ÕëÀý×ÓÊÇÒ»ÂëÊ£¬Ö»ÊÇÓï·¨ÓÐËù²»Í¬¡£´«µÝµÄʱºò²»Óô«pµÄµØÖ·&p£¬¶øÊÇÖ±½Ó´«p±¾Éí£º¡¡¡¡


¡¡¡¡ MYCLASS* p = NULL;
¡¡¡¡ func1(p);¡¡¡¡


¡¡¡¡ ÔÚµ÷ÓÃÖ®ºó£¬pÖ¸ÏòÒ»¸öеĶÔÏó¡£Ò»°ãÀ´½²£¬ÒýÓõÄÔ­Àí»ò¶à»òÉÙ¾ÍÏóÒ»¸öÖ¸Õ룬´ÓÓï·¨ÉÏ¿´Ëü¾ÍÊÇÒ»¸öÆÕͨ±äÁ¿¡£ËùÒÔÖ»ÒªÄãÅöµ½*&£¬¾ÍÓ¦¸ÃÏëµ½**¡£Ò²¾ÍÊÇ˵Õâ¸öº¯ÊýÐ޸Ļò¿ÉÄÜÐ޸ĵ÷ÓÃÕßµÄÖ¸Õ룬¶øµ÷ÓÃÕßÏóÆÕͨ±äÁ¿Ò»Ñù´«µÝÕâ¸öÖ¸Õ룬²»Ê¹ÓõØÖ·²Ù×÷·û&¡£


¡¡¡¡ ÖÁÓÚ˵ʲô³¡ºÏҪʹÓÃÕâÖÖ·½·¨£¬ÎÒ»á˵£¬¼«ÉÙ¡£MFCÔÚÆ伯ºÏÀàÖÐÓõ½ÁËËü¨CÀýÈ磬CObList£¬ËüÊÇÒ»¸öCObjectsÖ¸ÕëÁÐ±í¡£
class CObList : public CObject {
¡¡¡¡ ¡­¡­
¡¡¡¡ // »ñÈ¡/ÐÞ¸ÄÖ¸¶¨Î»ÖõÄÔªËØ
¡¡¡¡ CObject*& GetAt(POSITION position);
¡¡¡¡ CObject* GetAt(POSITION position) const;
¡¡¡¡ };¡¡¡¡


¡¡¡¡ÕâÀïÓÐÁ½¸öGetAtº¯Êý£¬¹¦Äܶ¼ÊÇ»ñÈ¡¸ø¶¨Î»ÖõÄÔªËØ¡£Çø±ðºÎÔÚÄØ£¿


¡¡¡¡Çø±ðÔÚÓÚÒ»¸öÈÃÄãÐÞ¸ÄÁбíÖеĶÔÏó£¬ÁíÒ»¸öÔò²»ÐС£ËùÒÔÈç¹ûÄãд³ÉÏÂÃæÕâÑù£º CObject* pObj = mylist.GetAt(pos);¡¡¡¡


¡¡¡¡ÔòpObjÊÇÁбíÖÐij¸ö¶ÔÏóµÄÖ¸Õ룬Èç¹û½ÓןıäpObjµÄÖµ£º pObj = pSomeOtherObj;


¡¡¡¡Õâ²¢¸Ä±ä²»ÁËÔÚλÖÃpos´¦µÄ¶ÔÏóµØÖ·£¬¶ø½ö½öÊǸıäÁ˱äÁ¿pObj¡£µ«ÊÇ£¬Èç¹ûÄãд³ÉÏÂÃæÕâÑù£º CObject*& rpObj = mylist.GetAt(pos);¡¡¡¡


¡¡¡¡ ÏÖÔÚ£¬rpObjÊÇÒýÓÃÒ»¸öÁбíÖеĶÔÏóµÄÖ¸Õ룬ËùÒÔµ±¸Ä±ärpObjʱ£¬Ò²»á¸Ä±äÁбíÖÐλÖÃpos´¦µÄ¶ÔÏóµØÖ·¨C»»¾ä»°Ëµ£¬Ìæ´úÁËÕâ¸ö¶ÔÏó¡£Õâ¾ÍÊÇΪʲôCObList»áÓÐÁ½¸öGetAtº¯ÊýµÄÔµ¹Ê¡£Ò»¸ö¿ÉÒÔÐÞ¸ÄÖ¸ÕëµÄÖµ£¬ÁíÒ»¸öÔò²»ÄÜ¡£×¢ÒâÎÒÔÚ´Ë˵µÄÊÇÖ¸Õ룬²»ÊǶÔÏó±¾Éí¡£ÕâÁ½¸öº¯Êý¶¼¿ÉÒÔÐ޸ĶÔÏ󣬵«Ö»ÓÐ*&°æ±¾¿ÉÒÔÌæ´ú¶ÔÏó¡£


¡¡¡¡ ÔÚC/C++ÖÐÒýÓÃÊǺÜÖØÒªµÄ£¬Í¬Ê±Ò²ÊǸßЧµÄ´¦ÀíÊֶΡ£ËùÒÔÒªÏë³ÉΪC/C++¸ßÊÖ£¬¶ÔÒýÓõĸÅÄîûÓÐ͸³¹µÄÀí½âºÍÊìÁ·µÄÓ¦ÓÃÊDz»Ðеġ£


¡¾´ó ÖРС¡¿¡¾´òÓ¡¡¿ ¡¾·±Ìå¡¿¡¾Í¶¸å¡¿¡¾Êղء¿ ¡¾ÍƼö¡¿¡¾¾Ù±¨¡¿¡¾ÆÀÂÛ¡¿ ¡¾¹Ø±Õ¡¿ ¡¾·µ»Ø¶¥²¿¡¿
ÉÏһƪ£ºJava JDBCÃæÊÔÌâ ÏÂһƪ£ºJAVAºÍC++Çø±ð

×îÐÂÎÄÕÂ

ÈÈÃÅÎÄÕÂ

Hot ÎÄÕÂ

Python

C ÓïÑÔ

C++»ù´¡

´óÊý¾Ý»ù´¡

linux±à³Ì»ù´¡

C/C++ÃæÊÔÌâÄ¿