| ÂÛ̳ע²á| ¼ÓÈëÊÕ²Ø | ÉèΪÊ×Ò³| RSS
Google
Äúµ±Ç°µÄλÖãºÊ×Ò³ > LinuxƵµÀ > Linux¿ª·¢Çø > Èí¼þ¿ª·¢

C++×Ô¶¯»¯(Ä£°åÔª)±à³Ì»ù´¡ÓëÓ¦ÓÃ

ʱ¼ä£º2006-06-16 11:29:29  À´Ô´£ºÖйúITʵÑéÊÒ  ×÷ÕߣºLinuxÁªÃËÊÕ¼¯
£vDTLinuxÁªÃË
vDTLinuxÁªÃË

#if 0vDTLinuxÁªÃË
vDTLinuxÁªÃË
    ÔÚÉÏһƪÎÄÕµÄ×îºóÌáµ½ÁËÒ»¸öÏà¶ÔÀ´ËµÍ¨ÓÃÒ»µãµÄLOOPÑ­»·£¬ÏÂÃæ»¹Êǽ«ÉÏһƪÎÄvDTLinuxÁªÃË
ÕÂÖеÄLOOPÑ­»·´úÂë¸´ÖÆÈçÏ£ºvDTLinuxÁªÃË
vDTLinuxÁªÃË
#endifvDTLinuxÁªÃË
#ifdef CODE1vDTLinuxÁªÃË
#include vDTLinuxÁªÃË
template void print()vDTLinuxÁªÃË
{//ÕâÀïµÄnÊDZàÒëÆÚµÄ½á¹û£¬¿ÉÒÔÓÃÀ´¶¨ÒåÊý×éµÄvDTLinuxÁªÃË
        int a[n+1];//Õâô×öÊÇΪÁËÖ¤Ã÷nÊDZàÒëÆÚ³£Á¿vDTLinuxÁªÃË
        std::cout << sizeof(a)/sizeof(int)-1 << " " ;vDTLinuxÁªÃË
}vDTLinuxÁªÃË
template struct LOOPvDTLinuxÁªÃË
{vDTLinuxÁªÃË
        static void execute(){LOOP::execute();print();}vDTLinuxÁªÃË
};vDTLinuxÁªÃË
template <>struct LOOP<0>//Ñ­»·ÖÕÖ¹Ìõ¼þvDTLinuxÁªÃË
{vDTLinuxÁªÃË
        static void execute(){print<0>();}vDTLinuxÁªÃË
};vDTLinuxÁªÃË
int main()vDTLinuxÁªÃË
{vDTLinuxÁªÃË
        LOOP<5>::execute();vDTLinuxÁªÃË
        return 0;vDTLinuxÁªÃË
}vDTLinuxÁªÃË
#endif//CODE1vDTLinuxÁªÃË
////////////////////////////////////////////////////////////////////////////////vDTLinuxÁªÃË
//³ÌÐòÔËÐнá¹ûÈçÏÂËùʾ:vDTLinuxÁªÃË
/*************************************vDTLinuxÁªÃË
0 1 2 3 4 5 vDTLinuxÁªÃË
********************************/vDTLinuxÁªÃË
////////////////////////////////////////////////////////////////////////////////vDTLinuxÁªÃË
#if 0vDTLinuxÁªÃË
vDTLinuxÁªÃË
    ÏÖÔÚËùÐèÒª¿¼ÂǵÄÎÊÌâÊÇÔõô½«ÉÏÃæµÄprintÄ£°åº¯ÊýÊéдµÃ¸üͨÓÃЩ£¬ÒòΪÿ¶¨ÒåÒ»¸övDTLinuxÁªÃË
еÄprintº¯Êý¾ÍÐèÒªÖØÐÂÊéдÁ½¸öLOOPÄ£°å£¬ÎªÁ˱ÜÃâÕâÖÖÖØ¸´´úÂëµÃÊéд£¬Ôڴ˺ÜÈÝÒ×ÏëvDTLinuxÁªÃË
µ½µÄÊǽ«Õâ¸öprintÄ£°åº¯Êý×÷Ϊģ°å²ÎÊý´«µÝ£¬ºÃÁËÈÃÎÒÃÇ¿ªÊ¼Ðµij¢ÊÔ°É¡£¾ßÌåµÃʾÀý´úvDTLinuxÁªÃË
ÂëÈçÏÂËùʾ£ºvDTLinuxÁªÃË
vDTLinuxÁªÃË
#endifvDTLinuxÁªÃË
#ifdef CODE2vDTLinuxÁªÃË
#include vDTLinuxÁªÃË
//ÏÂÃæµÄÁ½¸öÄ£°å¾Í±ÈCODE1ÀïÃæµÄLOOPÄ£°åͨÓöàÁËvDTLinuxÁªÃË
template class Function,size_t i> struct LOOPvDTLinuxÁªÃË
{vDTLinuxÁªÃË
        static void execute()vDTLinuxÁªÃË
        {vDTLinuxÁªÃË
                LOOP::execute();vDTLinuxÁªÃË
                Function::execute();vDTLinuxÁªÃË
        }vDTLinuxÁªÃË
};vDTLinuxÁªÃË
template class Function> struct LOOPvDTLinuxÁªÃË
{vDTLinuxÁªÃË
        static void execute()vDTLinuxÁªÃË
        {vDTLinuxÁªÃË
                Function<0>::execute();vDTLinuxÁªÃË
        }vDTLinuxÁªÃË
};vDTLinuxÁªÃË
//ΪÁËÄ£°å»¯±ØÐ뽫ԭÀ´µÄÊä³öº¯Êý×ö³ÉÒ»¸öÄ£°å½á¹¹ÌåvDTLinuxÁªÃË
template struct FunctionvDTLinuxÁªÃË
{vDTLinuxÁªÃË
        static void execute()vDTLinuxÁªÃË
        {//ÕâÀïµÄnÊDZàÒëÆÚµÄ½á¹û£¬¿ÉÒÔÓÃÀ´¶¨ÒåÊý×éµÄvDTLinuxÁªÃË
                int a[n+1];//Õâô×öÊÇΪÁËÖ¤Ã÷nÊDZàÒëÆÚ³£Á¿vDTLinuxÁªÃË
                std::cout << sizeof(a)/sizeof(int)-1 << " " ;vDTLinuxÁªÃË
        }vDTLinuxÁªÃË
};vDTLinuxÁªÃË
//ÏÂÃæÊDzâÊÔ´úÂëvDTLinuxÁªÃË
int main()vDTLinuxÁªÃË
{vDTLinuxÁªÃË
        LOOP::execute();vDTLinuxÁªÃË
        return 0;vDTLinuxÁªÃË
}vDTLinuxÁªÃË
#endif//CODE2vDTLinuxÁªÃË
////////////////////////////////////////////////////////////////////////////////vDTLinuxÁªÃË
//³ÌÐòÔËÐнá¹ûÈçÏÂËùʾ:vDTLinuxÁªÃË
/******************************************vDTLinuxÁªÃË
0 1 2 3 4 5 vDTLinuxÁªÃË
********************************************/vDTLinuxÁªÃË
////////////////////////////////////////////////////////////////////////////////vDTLinuxÁªÃË
#if 0vDTLinuxÁªÃË
vDTLinuxÁªÃË
    ´ÓCODE2µÄ´úÂëÖпÉÒÔ¿´³ö£¬CODE2ÖеÄLOOPÑ­»·½«CODE1ÖеÄprintÄ£°åº¯ÊýÄ£°å²ÎÊývDTLinuxÁªÃË
»¯Ö®ºó¾ÍʹµÃCODE2ÖеÄLOOP¸üͨÓÃһЩÁË£¬ÔÚʹÓõÄʱºò½ö½öÖ»ÊÇÐèÒª°´ÕÕFunctionµÄ¹ævDTLinuxÁªÃË
·¶Ð´Ò»¸öÄ£°å½á¹¹¾Í¿ÉÒÔÁË£¬²»±ØÔÙÊéÐ´ÖØ¸´½á¹¹µÄLOOPÁË£¬´Ó¶ø¾«¼òÁËʹÓÃʱÐèÒª±àдvDTLinuxÁªÃË
µÄ´úÂëÁ¿¡£µ«ÊÇÎÒÃÇ×¢Òâµ½½á¹û²¢²»¸´ºÏSTLµÄǰ±Õºó¿ªµÄϰ¹ß£¬ÎÒÃÇÒ²²»ÄܺÜÈÝÒ×µÄÀí½âvDTLinuxÁªÃË
²âÊÔ´úÂëmainº¯ÊýÖеÄLOOPµÄÒâÒåÁË£¬ÎªÁ˱ÜÃâʹÓÃÖеĴíÎó±ØÐë¹æ¶¨ºÃËüvDTLinuxÁªÃË
µÄÃ÷È·µÄÒâÒ壺vDTLinuxÁªÃË
vDTLinuxÁªÃË
    (1)´Ó0µ½nÑ­»·Ö´ÐÐFunction£¬²¢ÇÒÊÇǰ±Õºó¿ªµÄϰ¹ßvDTLinuxÁªÃË
vDTLinuxÁªÃË
    (2)½«FunctionÖ´ÐÐn´Î£¬Ã¿´ÎµÄÕûÐͲÎÊý´Ó0µÝÔö1vDTLinuxÁªÃË
vDTLinuxÁªÃË
    ΪÁËʹCODE2ÖеÄLOOPÑ­»·±í´ïµÄÊÇÕâÁ½¸öÒâÒ壬±ØÐë¶ÔCODE2ÖеÄLOOPÑ­»·½øÐиÄдvDTLinuxÁªÃË
¸ÄдºòµÄ´úÂëÈçÏÂËùʾ£ºvDTLinuxÁªÃË
    vDTLinuxÁªÃË
#endifvDTLinuxÁªÃË
#ifdef CODE3vDTLinuxÁªÃË
#include vDTLinuxÁªÃË
//ÏÂÃæµÄÁ½¸öÄ£°å¾Í±ÈCODE1ÀïÃæµÄLOOPÄ£°åͨÓöàÁËvDTLinuxÁªÃË
template class Function,size_t i> struct LOOPvDTLinuxÁªÃË
{vDTLinuxÁªÃË
        static void execute()vDTLinuxÁªÃË
        {vDTLinuxÁªÃË
                LOOP::execute();vDTLinuxÁªÃË
                Function::execute();vDTLinuxÁªÃË
        }vDTLinuxÁªÃË
};vDTLinuxÁªÃË
template class Function> struct LOOPvDTLinuxÁªÃË
{vDTLinuxÁªÃË
        static void execute(){}vDTLinuxÁªÃË
};vDTLinuxÁªÃË
//ΪÁËÄ£°å»¯±ØÐ뽫ԭÀ´µÄÊä³öº¯Êý×ö³ÉÒ»¸öÄ£°å½á¹¹ÌåvDTLinuxÁªÃË
template struct FunctionvDTLinuxÁªÃË
{vDTLinuxÁªÃË
        static void execute()vDTLinuxÁªÃË
        {//ÕâÀïµÄnÊDZàÒëÆÚµÄ½á¹û£¬¿ÉÒÔÓÃÀ´¶¨ÒåÊý×éµÄvDTLinuxÁªÃË
                int a[n+1];//Õâô×öÊÇΪÁËÖ¤Ã÷nÊDZàÒëÆÚ³£Á¿vDTLinuxÁªÃË
                std::cout << sizeof(a)/sizeof(int)-1 << " " ;vDTLinuxÁªÃË
        }vDTLinuxÁªÃË
};vDTLinuxÁªÃË
//ÏÂÃæÊDzâÊÔ´úÂëvDTLinuxÁªÃË
int main()vDTLinuxÁªÃË
{vDTLinuxÁªÃË
        //ÏÂÃæµÄÕâÐдúÂë¿ÉÒÔ°´ÕÕÉÏÃæµÄÁ½ÖÖÒâÒåÖ±¹ÛµÄÀí½âΪ£ºvDTLinuxÁªÃË
        //(1)´Ó0µ½5Ñ­»·Ö´ÐÐFunction£¬·¶Î§[0,5)vDTLinuxÁªÃË
        //(2)½«FunctionÖ´ÐÐ5´Î£¬Ã¿´ÎµÄÕûÐͲÎÊý´Ó0µÝÔö1vDTLinuxÁªÃË
        LOOP::execute();vDTLinuxÁªÃË
        return 0;vDTLinuxÁªÃË
}vDTLinuxÁªÃË
#endif//CODE3vDTLinuxÁªÃË
////////////////////////////////////////////////////////////////////////////////vDTLinuxÁªÃË
//³ÌÐòÔËÐнá¹ûÈçÏÂËùʾ:vDTLinuxÁªÃË
/******************************************vDTLinuxÁªÃË
0 1 2 3 4 vDTLinuxÁªÃË
*******************************************/vDTLinuxÁªÃË
////////////////////////////////////////////////////////////////////////////////vDTLinuxÁªÃË
#if 0vDTLinuxÁªÃË
vDTLinuxÁªÃË
    ´ÓCODE3µÄÔËÐнá¹ûÀ´¿´È·ÊµÂú×ãÁËÎÒÃÇËùÐèÒª±í´ïµÄÃ÷È·µÄÒâÒ壬Òò´Ë´úÂëÀí½âÆðÀ´vDTLinuxÁªÃË
¾Í·Ç³£Ö±¹ÛÁË¡£vDTLinuxÁªÃË
vDTLinuxÁªÃË
    ´ÓCODE3µÄ´úÂëÖÐÎÒÃÇ»¹ÊÇ·¢ÏÖLOOPµÄÆðʼ²ÎÊý¹Ì¶¨Îª0£¬ÕâÒ»µãʵ¼ÊÉÏÒ²ÊÇ¿ÉÒÔ½øÒ»vDTLinuxÁªÃË
²½¸Ä½øµÄ¡£ÏÂÃæÎÒÃǾÍÀ´¿´¿´ÈçºÎʹµÃÆðʼģ°å²ÎÊýÒ²¿ÉÒÔÖ¸¶¨µÄ£¬¼û´úÂëCODE4£ºvDTLinuxÁªÃË
vDTLinuxÁªÃË
#endifvDTLinuxÁªÃË
#ifdef CODE4vDTLinuxÁªÃË
#include vDTLinuxÁªÃË
//¼ÓÈëÒ»¸öÍ⸲²ãÀ´´«µÝ¶îÍâµÄÄ£°å²ÎÊývDTLinuxÁªÃË
template class Function,size_t start,size_t finish>vDTLinuxÁªÃË
struct LOOPvDTLinuxÁªÃË
{vDTLinuxÁªÃË
        static void execute()vDTLinuxÁªÃË
        {vDTLinuxÁªÃË
                LOOP_BODY::execute();vDTLinuxÁªÃË
        }vDTLinuxÁªÃË
private:vDTLinuxÁªÃË
        //ÒýÈëÁËÒ»¸ö²¼¶ûÐ͵ÄÄ£°å²ÎÊýÓÃÀ´È·¶¨Ñ­»·µÄÖÕÖ¹Ìõ¼þvDTLinuxÁªÃË
        template struct LOOP_BODYvDTLinuxÁªÃË
        {vDTLinuxÁªÃË
                static void execute()vDTLinuxÁªÃË
                {vDTLinuxÁªÃË
                        LOOP_BODYstart)>::execute();vDTLinuxÁªÃË
                        Function::execute();vDTLinuxÁªÃË
                }vDTLinuxÁªÃË
        };vDTLinuxÁªÃË
        //Ñ­»·µÄÖÕÖ¹Óï¾ä£¬Í£Ö¹µÝ¹éÒÔ½áÊøÑ­»·vDTLinuxÁªÃË
        template struct LOOP_BODYvDTLinuxÁªÃË
        {vDTLinuxÁªÃË
                static void execute(){}vDTLinuxÁªÃË
        };vDTLinuxÁªÃË
};vDTLinuxÁªÃË
//ΪÁËÄ£°å»¯±ØÐ뽫ԭÀ´µÄÊä³öº¯Êý×ö³ÉÒ»¸öÄ£°å½á¹¹ÌåvDTLinuxÁªÃË
template struct FunctionvDTLinuxÁªÃË
{vDTLinuxÁªÃË
        static void execute()vDTLinuxÁªÃË
        {//ÕâÀïµÄnÊDZàÒëÆÚµÄ½á¹û£¬¿ÉÒÔÓÃÀ´¶¨ÒåÊý×éµÄvDTLinuxÁªÃË
                int a[n+1];//Õâô×öÊÇΪÁËÖ¤Ã÷nÊDZàÒëÆÚ³£Á¿vDTLinuxÁªÃË
                std::cout << sizeof(a)/sizeof(int)-1 << " " ;vDTLinuxÁªÃË
        }vDTLinuxÁªÃË
};vDTLinuxÁªÃË
//ÏÂÃæÊDzâÊÔ´úÂëvDTLinuxÁªÃË
int main()vDTLinuxÁªÃË
{vDTLinuxÁªÃË
        //ÏÂÃæµÄÕâÐдúÂë¿ÉÒÔÖ±¹ÛµÄÀí½âΪ£ºvDTLinuxÁªÃË
        //(1)´Ó1µ½5Ñ­»·Ö´ÐÐFunction£

 2/11   |‹ ‹‹ 1 2 3 4 5 6 ›› ›|

À´¶¥Ò»ÏÂ
½ü»ØÊ×Ò³
·µ»ØÊ×Ò³
·¢±íÆÀÂÛ ¹²ÓÐÌõÆÀÂÛ
Óû§Ãû: ÃÜÂë:
ÑéÖ¤Âë: ÄäÃû·¢±í
Ïà¹ØÎÄÕÂ
    ÎÞÏà¹ØÐÅÏ¢
À¸Ä¿¸üÐÂ
À¸Ä¿ÈÈÃÅ