• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            Impossible is nothing  
              愛過知情重醉過知酒濃   花開花謝終是空   緣份不停留像春風來又走   女人如花花似夢
            公告
            日歷
            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567
            統計
            • 隨筆 - 8
            • 文章 - 91
            • 評論 - 16
            • 引用 - 0

            導航

            常用鏈接

            留言簿(4)

            隨筆分類(4)

            隨筆檔案(8)

            文章分類(77)

            文章檔案(91)

            相冊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

             

            1. c++中類的相互引用
             
              原則是:相互引用的class要分別寫.h和.cpp文件(分別合用一個.h,.cpp也可)
                     在.h文件中只需申明class類型即可,一定不要包含其他類的頭文件
                     在.cpp文件中必須要包含其他要引用的頭件
                     不要將函數申明跟寒暑提在同一文件中實現,否則會出意想不到的錯誤!!!
                    
                     a.h b.h 合成一個.h文件
                     a.cpp b.cpp 合成一個.cpp文件也可
                    
              a.h 
              #ifndef _A_
              #define _A_
              
              class b;
              class a;
              
              class a {
               friend class  b;
              private:
               int aa;  
               void a1( b m );
              };
              #endif
               a.cpp
                    #include "stdafx.h"
              #include "a.h"
              #include "b.h"
              
              void a::a1(b m )
              { 
               m.bb = 0 ;
              }
               b.h
              #ifndef _B_
              #define _B_
              class  b;
              class a;
              
              class  b
              {
               friend class a;
              private:
               int bb;
               void zzz(a n);
              }; 
              #endif
             b.cpp
                 #include "stdafx.h"
              #include "b.h"
              #include "a.h"
              void b::zzz(a m )
              { 
               m.aa = 0 ;
              } 
             
               main.cpp
              #include "stdafx.h"
              #include "a.h"
              #include "b.h"
              
              int main(int argc, char* argv[])
              {
              
                  a aa;
                  b bb;
              
                  return 0;
              }

            2. 鏈表的好用法
               struct a {
                 static a *mLinkedList; // 申明為一個靜態變量
             
                 a *mNext;
                 bool mCanRemoteCreate;

                a(bool canRemoteCreate)
                {
                   mNext = mLinkedList;
                   mLinkedList = this;
                   mCanRemoteCreate = canRemoteCreate;
                }
                static int *create(const char *name);
              };
             
              a *a::mLinkedList = NULL; // 初始化
             
            3. 靈活的應用# ##
            Token-Pasting Operator (##)

            #define paster( n ) printf( "token" #n " = %d", token##n )
            int token9 = 9;
            If a macro is called with a numeric argument like
            paster( 9 );the macro yields
            printf( "token" "9" " = %d", token9 );which becomes
            printf( "token9 = %d", token9 );

            Stringizing Operator (#)
            #define stringer( x ) printf( #x "\n" )
            void main()
            {
                stringer( In quotes in the printf function call\n );
                stringer( "In quotes when printed to the screen"\n );  
                stringer( "This: \"  prints an escaped double quote" );
            }
            Such invocations would be expanded during preprocessing, producing the following code:
            void main()
            {
               printf( "In quotes in the printf function call\n" "\n" );
               printf( "\"In quotes when printed to the screen\"\n" "\n" );
               printf( "\"This:
            \\\" prints an escaped double quote\"" "\n" );
            }
            When the program is run, screen output for each line is as follows:In quotes in the printf function call
            "In quotes when printed to the screen"
            "This: \" prints an escaped double quotation mark"
            #define IMPLEMENT_NETCONNECTION(className, classGroup, canRemoteCreate) \
               NetClassRep* className::getClassRep() const { return &className::dynClassRep; } \
               NetClassRepInstance<className> className::dynClassRep(#className, 0, NetClassTypeNone, 0); \
               NetClassGroup className::getNetClassGroup() const { return classGroup; } \
               static NetConnectionRep g##className##Rep(&className::dynClassRep, canRemoteCreate)

            4. 枚舉:初始化為0值開始,后者比前者大1,除非顯式指定.
               By default, the first enumerator has a value of 0, and each successive enumerator is one larger
               than the value of the previous one, unless you explicitly specify a value for a particular
               enumerator. Enumerators needn’t have unique values. The name of each enumerator is treated
               as a constant and must be unique within the scope where the enum is defined. An enumerator
               can be promoted to an integer value. However, converting an integer to an enumerator requires
               an explicit cast, and the results are not defined.

            =========================
            一些優秀的數學算法
            5.1 /// Determines if number is a power of two.
             inline bool isPow2(const U32 number)
             {
                return (number & (number - 1)) == 0;
             }
            5.2 浮點數的計算機中的儲存方法

                單精度      1|   8   |   23    |
                         符號  指數      尾數
                雙精度      1|   11  |   52    |
                         符號  指數      尾數  
                        
                10110.100011 -> 1.0110100011* 2(4) 2的4之方
               
                符號位 0
                尾數   0110100011
                指數   4 以過剩127儲存 +127= 131  -> 10000011
                所以  IEEE 754 : 0100000110110100011
               
                -0.0010011  -> -1.0011 * 2(-3) 2的-3之方
                符號位:-1
                尾數  : 0011
                指數為:-3  +127  的124 -〉01111100
                所以: 1 01111100 0011000000000000000000
               
                /// Determines the binary logarithm of the input value rounded down to the nearest power of 2.
             inline U32 getBinLog2(U32 value)
             {
                F32 floatValue = F32(value);
                return (*((U32 *) &floatValue) >> 23) - 127;
             }

            posted on 2006-03-03 15:30 笑笑生 閱讀(260) 評論(0)  編輯 收藏 引用 所屬分類: C++語言
             
            Copyright © 笑笑生 Powered by: 博客園 模板提供:滬江博客
            国内精品伊人久久久久网站| 热久久这里只有精品| 亚洲精品久久久www| 精品综合久久久久久98| 99久久国产热无码精品免费| 99久久精品久久久久久清纯| 7777精品久久久大香线蕉| 日韩欧美亚洲综合久久影院d3| 亚洲?V乱码久久精品蜜桃| 久久精品国产亚洲AV麻豆网站 | 久久精品久久久久观看99水蜜桃 | 合区精品久久久中文字幕一区| 亚洲国产精品无码久久一线 | 久久精品女人天堂AV麻| 久久综合噜噜激激的五月天| 无码乱码观看精品久久| 超级碰久久免费公开视频| 狼狼综合久久久久综合网| 一日本道伊人久久综合影| 精品国产一区二区三区久久蜜臀| 色88久久久久高潮综合影院 | 狠狠色丁香婷综合久久| 无码人妻精品一区二区三区久久久| 久久综合五月丁香久久激情| 精品综合久久久久久88小说| 久久婷婷综合中文字幕| 久久精品国产福利国产秒| 久久婷婷五月综合色高清| 亚洲狠狠婷婷综合久久久久| 亚洲乱码日产精品a级毛片久久| 色综合久久精品中文字幕首页| 国产精品久久久久久久久免费| 久久亚洲国产成人精品性色| 奇米综合四色77777久久| 亚洲av伊人久久综合密臀性色| 亚洲精品乱码久久久久久自慰| 亚洲精品国产字幕久久不卡| 久久综合狠狠综合久久| 99久久精品午夜一区二区| a高清免费毛片久久| 国产成人久久精品二区三区|