ºìÁªLinuxÃÅ»§
Linux°ïÖú

C++óðÑÔ£ºÀí½âinline»¯µÄ½éÈëºÍÅųý

·¢²¼Ê±¼ä:2006-05-03 11:55:44À´Ô´:ºìÁª×÷Õß:°®µÄ±ßÔµ
inline º¯Êý----¶àô°ôµÄÖ÷Òâ°¡£¡ËüÃÇ¿´ÆðÀ´Ïñº¯Êý£¬ËüÃDzúÉúµÄЧ¹ûÒ²Ïñº¯Êý£¬ËüÃÇÔÚ¸÷·½Ã涼±ÈºêºÃµÃÌ«¶àÌ«¶à£¬¶øÄãÈ´¿ÉÒÔÔÚµ÷ÓÃËüÃÇʱ²»ÕÐÖº¯Êýµ÷Óõijɱ¾¡£Ä㻹ÓÐʲô¸ü¶àµÄÒªÇóÄØ£¿

¡¡¡¡Êµ¼ÊÉÏÄãµÃµ½µÄ¿ÉÄܱÈÄãÏëµÄ¸ü¶à£¬ÒòΪ±ÜÃ⺯Êýµ÷Óõijɱ¾Ö»ÊǹÊʵÄÒ»²¿·Ö¡£ÔÚµäÐÍÇé¿öÏ£¬±àÒëÆ÷µÄÓÅ»¯ÊÇΪÁËÒ»¶ÎÁ¬ÐøµÄûÓк¯Êýµ÷ÓõĴúÂëÉè¼ÆµÄ£¬ËùÒÔµ±Äã inline »¯Ò»¸öº¯Êý£¬Äã¿ÉÄܾÍʹµÃ±àÒëÆ÷Äܹ»¶Ôº¯ÊýÌåʵÐÐÉÏÏÂÎÄÏà¹ØµÄÌØÊâÓÅ»¯¡£´ó¶àÊý±àÒëÆ÷¶¼²»»á¶Ô "outlined" º¯Êýµ÷ÓÃʵÐÐÕâÑùµÄÓÅ»¯¡£

¡¡¡¡È»¶ø£¬ÔÚ±à³ÌÖУ¬¾ÍÏñÔÚÉú»îÖУ¬Ã»ÓÐÃâ·ÑÎç²Í£¬¶ø inline º¯ÊýÒ²²»ÀýÍâ¡£Ò»¸ö inline º¯Êý±³ºóµÄ˼ÏëÊÇÓú¯Êý±¾Ìå´úÌæÿһ´¦¶ÔÕâ¸öº¯ÊýµÄµ÷Ó㬶øÇÒ²»±ØÄÃ×Åͳ¼Æ±íÖÐµÄ Ph.D. ¾Í¿ÉÒÔ¿´³öÕâÑù¿ÉÄÜ»áÔö¼ÓÄãµÄÄ¿±ê´úÂëµÄ´óС¡£ÔÚÓÐÏÞÄÚ´æµÄ»úÆ÷ÉÏ£¬¹ý·ÖÈÈÖÔÓÚ inline »¯»áʹµÃ³ÌÐò¶ÔÓÚ¿ÉÓÿռäÀ´Ëµ¹ýÓÚÅÓ´ó¡£¼´Ê¹Ê¹ÓÃÁËÐéÄâÄڴ棬inline ÒýÆðµÄ´úÂëÅòÕÍÒ²»áµ¼Ö¸½¼ÓµÄ·ÖÒ³µ÷¶È£¬¼õÉÙÖ¸Á´æÃüÖÐÂÊ£¬ÒÔ¼°ËæÖ®¶øÀ´µÄÐÔÄÜËðʧ¡£

¡¡¡¡ÔÚÁíÒ»·½Ã棬Èç¹ûÒ»¸ö inline º¯Êý±¾ÌåºÜ¶Ì£¬Îªº¯Êý±¾ÌåÉú³ÉµÄ´úÂë¿ÉÄܱÈΪһ¸öº¯Êýµ÷ÓÃÉú³ÉµÄ´úÂ뻹ҪС¡£Èç¹ûÊÇÕâÖÖÇé¿ö£¬inline »¯Õâ¸öº¯Êý¿ÉÒÔʵ¼ÊÉϵ¼Ö¸üСµÄÄ¿±ê´úÂëºÍ¸ü¸ßµÄÖ¸Á´æÃüÖÐÂÊ£¡ ¼Çס£¬inline ÊÇÏò±àÒëÆ÷·¢³öµÄÒ»¸öÇëÇ󣬶ø²»ÊÇÒ»¸öÃüÁî¡£Õâ¸öÇëÇóÄܹ»ÒÔÏÔʽµÄ»òÒþʽµÄ·½Ê½Ìá³ö¡£ÒþʽµÄ·½·¨¾ÍÊÇÔÚÒ»¸öÀඨÒåµÄÄÚ²¿¶¨ÒåÒ»¸öº¯Êý£º

class Person {
¡¡public:
¡¡¡¡...
¡¡¡¡int age() const { return theAge; } // an implicit inline request: age is
¡¡¡¡... // defined in a class definition

¡¡private:
¡¡¡¡int theAge;
};

¡¡¡¡ÕâÑùµÄº¯Êýͨ³£ÊdzÉÔ±º¯Êý£¬²»¹ýÎÒÃÇÖªµÀÓÑÔªº¯ÊýÒ²Äܱ»¶¨ÒåÔÚÀàµÄÄÚ²¿£¬Èç¹ûËüÃÇÔÚÄÇÀËüÃÇÒ²±»ÒþʽµØÉùÃ÷Ϊ inline¡£

¡¡¡¡ÏÔʽµÄÉùÃ÷Ò»¸ö inline º¯ÊýµÄ·½·¨ÊÇÔÚËüµÄÉùÃ÷֮ǰ¼ÓÉÏ inline ¹Ø¼ü×Ö¡£ÀýÈ磬ÒÔϾÍÊDZê×¼ max Ä£°å£¨À´×Ô £©¾­³£Óõ½µÄµÄʵÏÖ·½·¨£º

template // an explicit inline
inline const T& std::max(const T& a, const T& b) // request: std::max is
{ return a < b ? b : a; } // preceded by "inline"

max ÊÇÒ»¸öÄ£°åµÄÊÂʵÒý³öÒ»¸ö¹Û²ì½áÂÛ£ºinline º¯ÊýºÍÄ£°åÒ»°ã¶¼ÊǶ¨ÒåÔÚÍ·ÎļþÖеġ£Õâ¾ÍʹµÃһЩ³ÌÐòÔ±µÃ³ö½áÂ۶϶¨º¯ÊýÄ£°å±ØÐëÊÇ inline¡£Õâ¸ö½áÂÛÊÇ·Ç·¨µÄ¶øÇÒÓÐDZÔÚµÄΣº¦£¬ËùÒÔËüÖµµÃÎÒÃÇ¿¼²ìһϡ£ inline º¯ÊýÒ»°ã±ØÐëÔÚÍ·ÎļþÄÚ£¬ÒòΪ´ó¶àÊý¹¹½¨»·¾³ÔÚ±àÒëÆÚ¼ä½øÐÐ inline »¯¡£ÎªÁËÓñ»µ÷Óú¯ÊýµÄº¯Êý±¾ÌåÌæ»»Ò»¸öº¯Êýµ÷Ó㬱àÒëÆ÷±ØÐëÖªµÀº¯Êý¿´ÆðÀ´ÏñʲôÑù×Ó¡££¨ÓÐһЩ¹¹½¨»·¾³¿ÉÒÔÔÚÁ¬½ÓÆÚ¼ä½øÐÐ inline »¯£¬»¹ÓÐÉÙÊý¼¸¸ö----±ÈÈ磬»ùÓÚ .NET Common Language Infrastructure (CLI) µÄ¿ØÖÆ»·¾³----¾ÓÈ»ÄÜÔÚÔËÐÐʱ inline »¯¡£È»¶ø£¬ÕâЩ»·¾³¶¼ÊÇÀýÍ⣬²¢·Ç¹æÔò¡£inline »¯ÔÚ´ó¶àÊý C++ ³ÌÐòÖÐÊÇÒ»¸ö±àÒëʱÐÐΪ¡££©

¡¡¡¡Ä£°åÒ»°ãÔÚÍ·ÎļþÄÚ£¬ÒòΪ±àÒëÆ÷ÐèÒªÖªµÀÒ»¸öÄ£°å¿´ÆðÀ´ÏñʲôÒÔ±ãÓõ½Ëüʱ¶ÔËü½øÐÐʵÀý»¯¡££¨Í¬Ñù£¬Ò²²»ÊÇÈ«²¿Èç´Ë¡£Ò»Ð©¹¹½¨»·¾³¿ÉÒÔÔÚÁ¬½ÓÆÚ¼ä½øÐÐÄ£°åʵÀý»¯¡£È»¶ø£¬±àÒëÆÚʵÀý»¯¸üΪÆձ顣£© Ä£°åʵÀý»¯Óë inline »¯Î޹ء£Èç¹ûÄãдÁËÒ»¸öÄ£°å£¬¶øÇÒÄãÈÏΪËùÓдÓÕâ¸öÄ£°åʵÀý»¯³öÀ´µÄº¯Êý¶¼Ó¦¸ÃÊÇ inline µÄ£¬ÄÇô¾ÍÉùÃ÷Õâ¸öÄ£°åΪ inline£¬Õâ¾ÍÊÇÉÏÃæµÄ std::max µÄʵÏÖ±»×öµÄÊÂÇé¡£µ«ÊÇÈç¹ûÄãΪûÓÐÀíÓÉÒª inline »¯µÄº¯ÊýдÁËÒ»¸öÄ£°å£¬¾ÍÒª±ÜÃâÉùÃ÷Õâ¸öÄ£°åΪ inline£¨ÎÞÂÛÏÔʽµÄ»¹ÊÇÒþʽµÄ£©¡£inline »¯ÊÇÓгɱ¾µÄ£¬¶øÇÒÄ㲻ϣÍûÔÚºÁÎÞÔ¤¼ûµÄÇé¿öÏÂÔâÓöËüÃÇ¡£ÎÒÃÇÒѾ­Ëµµ½ inline »¯ÊÇÈçºÎÒýÆð´úÂëÅòÕ͵ģ¬µ«ÊÇ£¬»¹ÓÐÆäËüµÄ³É±¾£¬¹ýÒ»»á¶ùÎÒÃÇÔÙÌÖÂÛ¡£

¡¡¡¡ÔÚ×öÕâ¼þÊÂ֮ǰ£¬ÎÒÃÇÏÈÀ´Íê³É¶ÔÕâ¸ö½áÂ۵Ŀ¼²ì£ºinline ÊÇÒ»¸ö±àÒëÆ÷¿ÉÄܺöÂÔµÄÇëÇó¡£´ó¶àÊý±àÒëÆ÷¾Ü¾øËüÃÇÈÏΪ̫¸´Ô inline º¯Êý£¨ÀýÈ磬ÄÇЩ°üº¬Ñ­»·»òÕߵݹéµÄ£©£¬¶øÇÒ£¬³ýÁË×îϸËéµÄÒÔÍâµÄÈ«²¿ÐéÄ⺯ÊýµÄµ÷Óö¼²»»á±» inline »¯¡£²»Ó¦¸Ã¶ÔÕâºóÒ»¸ö½áÂ۸е½¾ªÑÈ¡£ÐéÄâÒâζ×Å¡°µÈ´ý£¬Ö±µ½ÔËÐÐʱ²ÅÄܶ϶¨ÄÄÒ»¸öº¯Êý±»µ÷Óá±£¬¶ø inline Òâζ×Å¡°Ö´ÐÐ֮ǰ£¬Óñ»µ÷Óú¯ÊýÈ¡´úµ÷Óõĵط½¡±¡£Èç¹û±àÒëÆ÷²»ÖªµÀÄÄÒ»¸öº¯Êý½«±»µ÷Óã¬ÄãºÜÄÑÔð±¸ËüÃǾܾø inline »¯Õâ¸öº¯Êý±¾Ìå¡£

¡¡¡¡ËùÓÐÕâЩ¼ÓÔÚÒ»Æ𣬵óö£ºÒ»¸ö±»Ö¸¶¨µÄ inline º¯ÊýÊÇ·ñÄÜÕæµÄ±» inline »¯£¬È¡¾öÓÚÄãËùʹÓõĹ¹½¨»·¾³----Ö÷ÒªÊDZàÒëÆ÷¡£ÐÒÔ˵ÄÊÇ£¬´ó¶àÊý±àÒëÆ÷¶¼ÓÐÒ»¸öÕï¶Ï²ã´Î£¬ÔÚËüÃDz»ÄÜ inline »¯Ò»¸öÄãÌá³öµÄº¯Êýʱ£¬»áµ¼ÖÂÒ»¸ö¾¯¸æ¡£

¡¡¡¡ÓÐʱºò£¬¼´Ê¹µ±±àÒëÆ÷ÍêÈ«ÐĸÊÇéÔ¸µØ inline »¯Ò»¸öº¯Êý£¬ËûÃÇ»¹ÊÇ»áΪÕâ¸ö inline º¯ÊýÉú³Éº¯Êý±¾Ìå¡£ÀýÈ磬Èç¹ûÄãµÄ³ÌÐòÒª³ÖÓÐÒ»¸ö inline º¯ÊýµÄµØÖ·£¬±àÒëÆ÷±ØÐëΪËüÉú³ÉÒ»¸ö outlined º¯Êý±¾Ìå¡£ËûÃÇÔõôÄÜÉú³ÉÒ»¸öÖ¸Ïò¸ù±¾²»´æÔڵĺ¯ÊýµÄÖ¸ÕëÄØ£¿ÔÙ¼ÓÉÏ£¬±àÒëÆ÷Ò»°ã²»»á¶Ôͨ¹ýº¯ÊýÖ¸ÕëµÄµ÷ÓýøÐÐ inline »¯£¬Õâ¾ÍÒâζ×Å£¬¶ÔÒ»¸ö inline º¯ÊýµÄµ÷ÓÿÉÄܱ»Ò²¿ÉÄܲ»±» inline »¯£¬ÒÀÀµÓÚÕâ¸öµ÷ÓÃÊÇÈçºÎ×ö³ÉµÄ£º

inline void f() {...} // assume compilers are willing to inline calls to f

void (*pf)() = f; // pf points to f
...

f(); // this call will be inlined, because it¡¯s a "normal" call
pf(); // this call probably won¡¯t be, because it¡¯s through
// a function pointer

ÉõÖÁÔÚÄã´ÓÀ´Ã»ÓÐʹÓú¯ÊýÖ¸ÕëµÄʱºò£¬Î´ inline »¯µÄ inline º¯ÊýµÄÓÄÁéÒ²»áʱ²»Ê±µØ°Ý·ÃÄ㣬ÒòΪ³ÌÐòÔ±²¢²»±ØÈ»ÊǺ¯ÊýÖ¸ÕëµÄΨһÐèÇóÕß¡£ÓÐʱºò±àÒëÆ÷»áÉú³É¹¹Ô캯ÊýºÍÎö¹¹º¯ÊýµÄ out-of-line ¿½±´£¬ÒÔ±ãËüÃÇÄܵõ½Ö¸ÏòÕâЩº¯ÊýµÄÖ¸Õ룬ÔÚ¶ÔÊý×éÖеĶÔÏó½øÐй¹ÔìºÍÎö¹¹Ê±Ê¹Óá£

¡¡¡¡ÊÂʵÉÏ£¬¹¹Ô캯ÊýºÍÎö¹¹º¯Êý¶ÔÓÚ inline »¯À´Ëµ¾­³£ÊÇÒ»¸ö±ÈÄãÔÚ²»¾­ÒâµÄ¼ì²éÖÐËùÄÜÏÔʾ³öÀ´µÄ¸ü¼ÓÔã¸âµÄºòÑ¡Õß¡£ÀýÈ磬¿¼ÂÇÏÂÃæÕâ¸öÀà Derived µÄ¹¹Ô캯Êý£º

class Base {
¡¡public:
¡¡¡¡...

¡¡private:
¡¡¡¡std::string bm1, bm2; // base members 1 and 2
};

class Derived: public Base {
¡¡public:
¡¡¡¡Derived() {} // Derived¡¯s ctor is empty - or is it?
¡¡¡¡...

¡¡private:
¡¡¡¡std::string dm1, dm2, dm3; // derived members 1-3
};

¡¡¡¡Õâ¸ö¹¹Ô캯Êý¿´ÉÏÈ¥ÏñÒ»¸ö inline »¯µÄ¼«ºÃµÄºòÑ¡Õߣ¬ÒòΪËü²»°üº¬´úÂë¡£µ«ÊÇÊÓ¾õ»á±»ÆÛÆ­¡£

¡¡¡¡C++ Ϊ¶ÔÏó±»´´½¨ºÍ±»Ïú»ÙʱËù·¢ÉúµÄÊÂÇé×ö³öÁ˸÷ÖÖ±£Ö¤¡£ÀýÈ磬µ±ÄãʹÓà new ʱ£¬ÄãµÄ¶¯Ì¬µÄ±»´´½¨¶ÔÏó»á±»ËüÃǵĹ¹Ô캯Êý×Ô¶¯³õʼ»¯£¬¶øµ±ÄãʹÓà delete¡£ÔòÏàÓ¦µÄÎö¹¹º¯Êý»á±»µ÷Óᣵ±Äã´´½¨Ò»¸ö¶ÔÏóʱ£¬Õâ¸ö¶ÔÏóµÄÿһ¸ö»ùÀàºÍÿһ¸öÊý¾Ý³ÉÔ±¶¼»á×Ô¶¯¹¹Ô죬¶øµ±Ò»¸ö¶ÔÏó±»Ïú»Ùʱ£¬Ôò·¢Éú¹ØÓÚÎö¹¹µÄ·´Ïò¹ý³Ì¡£Èç¹ûÔÚÒ»¸ö¶ÔÏó¹¹ÔìÆÚ¼äÓÐÒ»¸öÒì³£±»Å׳ö£¬Õâ¸ö¶ÔÏóÒѾ­Íê³É¹¹ÔìµÄÈκβ¿·Ö¶¼±»×Ô¶¯Ïú»Ù¡£ËùÓÐÕâЩÇé½Ú£¬C++ ֻ˵ʲô±ØÐë·¢Éú£¬µ«Ã»ÓÐ˵ÈçºÎ·¢Éú¡£ÄÇÊDZàÒëÆ÷µÄʵÏÖÕßµÄÊ£¬µ«ÏÔÈ»ÕâЩÊÂÇé²»»á×Ô¼º·¢Éú¡£ÔÚÄãµÄ³ÌÐòÖбØÐëÓÐһЩ´úÂëʹÕâЩÊ·¢Éú£¬¶øÕâЩ´úÂë----ÓɱàÒëÆ÷д³öµÄ´úÂëºÍÔÚ±àÒëÆÚ¼ä²åÈëÄãµÄ³ÌÐòµÄ´úÂë----±ØÐëλÓÚij´¦¡£ÓÐʱËüÃÇ×îÖÕ¾ÍλÓÚ¹¹Ô캯ÊýºÍÎö¹¹º¯ÊýÖУ¬ËùÒÔÎÒÃÇ¿ÉÒÔÉèÏëʵÏÖΪÉÏÃæÄǸöÉù³ÆΪ¿ÕµÄ Derived µÄ¹¹Ô캯ÊýÉú³ÉµÄ´úÂë¾ÍÏ൱ÓÚÏÂÃæÕâÑù£º

Derived::Derived() // conceptual implementation of
{
¡¡// "empty" Derived ctor

¡¡Base::Base(); // initialize Base part

¡¡try { dm1.std::string::string(); } // try to construct dm1
¡¡catch (...) { // if it throws,
¡¡¡¡Base::~Base(); // destroy base class part and
¡¡throw; // propagate the exception
}

try { dm2.std::string::string(); } // try to construct dm2
catch(...) {
¡¡// if it throws,
¡¡dm1.std::string::~string(); // destroy dm1,
¡¡Base::~Base(); // destroy base class part, and
throw; // propagate the exception
}

try { dm3.std::string::string(); } // construct dm3
catch(...) {
¡¡// if it throws,
¡¡dm2.std::string::~string(); // destroy dm2,
¡¡dm1.std::string::~string(); // destroy dm1,
¡¡Base::~Base(); // destroy base class part, and
throw; // propagate the exception
}
}

ÕâЩ´úÂë²¢²»´ú±íÕæÕýµÄ±àÒëÆ÷ËùÉú³ÉµÄ£¬ÒòΪÕæÕýµÄ±àÒëÆ÷»áÓøü¸´Ôӵķ½·¨´¦ÀíÒì³£¡£¾¡¹ÜÈç´Ë£¬Ëü»¹ÊÇ׼ȷµØ·´Ó³ÁË Derived µÄ¡°¿Õ¡±¹¹Ô캯Êý±ØÐëÌṩµÄÐÐΪ¡£²»ÂÛÒ»¸ö±àÒëÆ÷µÄÒì³£¶àô¸´ÔÓ£¬Derived µÄ¹¹Ô캯ÊýÖÁÉÙ±ØÐëµ÷ÓÃËüµÄÊý¾Ý³ÉÔ±ºÍ»ùÀàµÄ¹¹Ô캯Êý£¬¶øÕâЩµ÷Óã¨ËüÃÇ×Ô¼ºÒ²¿ÉÄÜÊÇ inline µÄ£©»áÓ°ÏìËü¶ÔÓÚ inline »¯µÄÎüÒýÁ¦¡£

¡¡¡¡Í¬ÑùµÄÔ­ÒòÒ²ÊÊÓÃÓÚ Base µÄ¹¹Ô캯Êý£¬ËùÒÔÈç¹ûËüÊÇ inline µÄ£¬²åÈëËüµÄÈ«²¿´úÂëÒ²Òª²åÈë Derived µÄ¹¹Ô캯Êý£¨Í¨¹ý Derived µÄ¹¹Ô캯Êý¶Ô Base µÄ¹¹Ô캯ÊýµÄµ÷Óã©¡£¶øÇÒÈç¹û string µÄ¹¹Ô캯ÊýÅöÇÉÒ²ÊÇ inline µÄ£¬Derived µÄ¹¹Ô캯ÊýÖн«Ôö¼ÓÎå¸öÄǸöº¯Êý´úÂëµÄ¿½±´£¬·Ö±ð¶ÔÓ¦ÓÚ Derived ¶ÔÏóÖеÄÎå¸ö strings£¨Á½¸ö¼Ì³ÐµÄ¼ÓÉÏÈý¸öËü×Ô¼ºÉùÃ÷µÄ£©¡£Ò²ÐíÔÚÏÖÔÚ£¬ÎªÊ²Ã´ËµÊÇ·ñ inline »¯ Derived µÄ¹¹Ô캯Êý²»ÊÇÒ»¸ö²»¾­´óÄԵľö¶¨¾ÍºÜÇå³þÁË¡£ÀàËƵĿ¼ÂÇÒ²ÊÊÓÃÓÚ Derived µÄÎö¹¹º¯Êý£¬ÓÃͬÑùµÄ»òÕß²»Í¬µÄ·½·¨£¬±ØÐë±£Ö¤ËùÓб» Derived µÄ¹¹Ô캯Êý³õʼ»¯µÄ¶ÔÏó±»ÍêÈ«Ïú»Ù¡£

¡¡¡¡¿âÉè¼ÆÕß±ØÐëÆÀ¹ÀÉùÃ÷º¯ÊýΪ inline µÄÓ°Ï죬ÒòΪΪ¿âÖеĿͻ§¿É¼ûµÄ inline º¯ÊýÌṩ¶þ½øÖÆÉý¼¶°æ±¾ÊDz»¿ÉÄܵġ£»»¾ä»°Ëµ£¬Èç¹û f ÊÇÒ»¸ö¿âÖеÄÒ»¸ö inline º¯Êý£¬¿âµÄ¿Í»§½«º¯Êý f µÄ±¾Ìå±àÒëµ½ËûÃǵÄÓ¦ÓóÌÐòÖС£Èç¹ûÒ»¸ö¿âµÄʵÏÖÕߺóÀ´¾ö¶¨ÐÞ¸Ä f£¬ËùÓÐʹÓÃÁË f µÄ¿Í»§¶¼±ØÐëÖØбàÒë¡£Õâ³£³£»áÁîÈËÑá·³¡£ÔÚÁíÒ»·½Ã棬Èç¹û f ÊÇÒ»¸ö·Ç inline º¯Êý£¬¶Ô f µÄ¸Ä±äÖ»ÐèÒª¿Í»§ÖØÐÂÁ¬½Ó¡£ÕâÓëÖØбàÒëÏà±ÈÏÔÈ»¼õÇáÁ˺ܴóµÄ¸ºµ££¬¶øÇÒ£¬Èç¹û¿âÖаüº¬µÄº¯ÊýÊǶ¯Ì¬Á´½ÓµÄ£¬Õâ¾ÍÊÇÒ»ÖÖ¶ÔÓÚÓû§À´ËµÍêȫ͸Ã÷µÄ·½·¨¡£
¡¡
¡¡¡¡ÎªÁ˳ÌÐò¿ª·¢µÄÄ¿±ê£¬ÔÚÍ·ÄÔÖÐÀμÇÕâЩÐèÒª¿¼ÂǵÄÊÂÏîÊǺÜÖØÒªµÄ£¬µ«ÊÇ´Ó±àÂëÆÚ¼äµÄʵÓù۵ãÀ´¿´£¬Õ¼ÓÐÖ§ÅäµØλµÄÊÂʵÊÇ£º´ó¶àÊýµ÷ÊÔÆ÷»áÓë inline º¯Êý·¢Éú³åÍ»¡£Õâ²»Ó¦¸ÃÊÇʲôÖØ´óµÄ·¢ÏÖ¡£ÄãÔõôÄÜÔÚÒ»¸ö²»ÔÚÄÇÀïµÄº¯ÊýÖÐÉèÖöϵãÄØ£¿ËäȻһЩ¹¹½¨»·¾³Éè·¨Ö§³Ö inline º¯ÊýµÄµ÷ÊÔ£¬¶àÊý»·¾³»¹ÊǼòµ¥µØΪµ÷ÊÔ¹¹½¨È¡ÏûÁË inline »¯¡£

¡¡¡¡Õâ¾Íµ¼³öÁËÒ»¸öÓÃÓÚ¾ö¶¨ÄÄЩº¯ÊýÓ¦¸Ã±»ÉùÃ÷Ϊ inline£¬ÄÄЩ²»Ó¦¸ÃµÄºÏºõÂß¼­µÄ²ßÂÔ¡£×î³õ£¬²»Òª inline Èκζ«Î÷£¬»òÕßÖÁÉÙÒª½«ÄãµÄ inline »¯µÄ·¶Î§ÏÞÖÆÔÚÄÇЩ±ØÐë inline µÄºÍÄÇЩʵÔÚ΢²»×ãµÀµÄº¯ÊýÉÏ¡£Í¨¹ýÉ÷ÖصØʹÓà inline£¬Äã¿ÉÒÔʹµ÷ÊÔÆ÷µÄʹÓñäµÃÈÝÒ×£¬µ«ÊÇÄãÒ²½« inline »¯·ÅÔÚÁËËü±¾À´Ó¦¸ÃÔڵĵØλ£º×÷ΪһÖÖÊÖ¶¯µÄÓÅ»¯¡£²»ÒªÍü¼ÇÓɾ­ÑéÈ·¶¨µÄ 80-20 ¹æÔò£¬ËüÐû³ÆÒ»¸öµäÐ͵ijÌÐòÓà 80% µÄʱ¼äÖ´ÐÐ 20% µÄ´úÂë¡£ÕâÊÇÒ»¸öÖØÒªµÄ¹æÔò£¬ÒòΪËüÌáÐÑÄã×÷Ϊһ¸öÈí¼þ¿ª·¢ÕßµÄÄ¿±êÊÇʶ±ð³öÄÜÈ«ÃæÌáÉýÄãµÄ³ÌÐòÐÔÄÜµÄ 20% µÄ´úÂë¡£Äã¿ÉÒÔ inline »òÕßÓÃÆäËû·½Ê½ÎÞÏÞÆڵص÷½ÚÄãµÄº¯Êý£¬µ«³ý·ÇÄ㽫¾«Á¦¼¯ÖÐÔÚÕýÈ·µÄº¯ÊýÉÏ£¬·ñÔò¾ÍÊÇ°×°×À˷Ѿ«Á¦¡£

¡¡¡¡Things to Remember

¡¡¡¡?½«´ó²¿·Ö inline ÏÞÖÆÔÚСµÄ£¬µ÷ÓÃƵ·±µÄº¯ÊýÉÏ¡£ÕâʹµÃ³ÌÐòµ÷ÊԺͶþ½øÖÆÉý¼¶¸ü¼ÓÈÝÒ×£¬×îС»¯Ç±ÔڵĴúÂëÅòÕÍ£¬²¢×î´ó»¯Ìá¸ß³ÌÐòËٶȵļ¸ÂÊ¡£

¡¡¡¡?²»Òª½ö½öÒòΪº¯ÊýÄ£°å³öÏÖÔÚÍ·ÎļþÖУ¬¾Í½«ËüÉùÃ÷Ϊ inline¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ