• <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>

            foobar

              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              6 隨筆 :: 14 文章 :: 0 評論 :: 0 Trackbacks

            2007年12月3日 #

            Advanced Test in C: The 0x10 Best Questions for C Programmers
            posted @ 2007-12-03 15:12 foobar 閱讀(195) | 評論 (0)編輯 收藏

            2007年11月23日 #

             

            #include <iostream.h>
            class Base
            {
            public:
            virtual void f(float x){ cout << "Base::f(float) " << x << endl; }
            void g(float x){ cout << "Base::g(float) " << x << endl; }
            void h(float x){ cout << "Base::h(float) " << x << endl; }
            };
            class Derived : public Base
            {
            public:
            virtual void f(float x){ cout << "Derived::f(float) " << x << endl; }
            void g(int x){ cout << "Derived::g(int) " << x << endl; }
            void h(float x){ cout << "Derived::h(float) " << x << endl; }
            };

            void main(void)
            {
            Derived d;
            Base 
            *pb = &d;
            Derived 
            *pd = &d;
            // Good : behavior depends solely on type of the object
            pb->f(3.14f); // Derived::f(float) 3.14
            pd->f(3.14f); // Derived::f(float) 3.14
            // Bad : behavior depends on type of the pointer
            pb->g(3.14f); // Base::g(float) 3.14
            pd->g(3.14f); // Derived::g(int) 3 (surprise!)
            // Bad : behavior depends on type of the pointer
            pb->h(3.14f); // Base::h(float) 3.14 (surprise!)
            pd->h(3.14f); // Derived::h(float) 3.14
            }

            class Base
            {
            public:
            void f(int x);
            };
            class Derived : public Base
            {
            public:
            void f(char *str);
            };
            void Test(void)
            {
            Derived 
            *pd = new Derived;
            pd
            ->f(10); // error
            //why?            
            just imagine multiple inheritance
            }
            posted @ 2007-11-23 20:44 foobar 閱讀(330) | 評論 (0)編輯 收藏

             

             1 # include <iostream.h>
             2 void output( int x); // 函數聲明
             3 void output( float x); // 函數聲明
             4 void output( int x)
             5 {
             6 cout << " output int " << x << endl ;
             7 }
             8 void output( float x)
             9 {
            10 cout << " output float " << x << endl ;
            11 }
            12 void main(void)
            13 {
            14 int x = 1;
            15 float y = 1.0;
            16 output(x); // output int 1
            17 output(y); // output float 1
            18 output(1); // output int 1
            19 // output(0.5); // error! ambiguous call, 因為自動類型轉換
            20 output(int(0.5)); // output int 0
            21 output(float(0.5)); // output float 0.5
            22 }
            posted @ 2007-11-23 20:35 foobar 閱讀(463) | 評論 (0)編輯 收藏

            void Func(char a[100])
            {
            cout<< sizeof(a) << endl; // 4 字節而不是100 字節
            }
            posted @ 2007-11-23 20:22 foobar 閱讀(309) | 評論 (0)編輯 收藏

            2007年11月15日 #

            int atexit ( void ( * function ) (void) );               <cstdlib>

             The function pointed by the function pointer argument is called when the program terminates normally.

            If more than one atexit function has been specified by different calls to this function, they are all executed in reverse order as a stack, i.e. the last function specified is the first to be executed at exit.

            One single function can be registered to be executed at exit more than once.

            C++ implementations are required to support the registration of at least 32 atexit functions.

            Parameters

            function
            Function to be called. The function has to return no value and accept no arguments.

            Return Value

            A zero value is returned if the function was successfully registered, or a non-zero value if it failed.

            Example

            /* atexit example */
                        #include <stdio.h>
                        #include <stdlib.h>
                        void fnExit1 (void)
                        {
                        puts ("Exit function 1.");
                        }
                        void fnExit2 (void)
                        {
                        puts ("Exit function 2.");
                        }
                        int main ()
                        {
                        atexit (fnExit1);
                        atexit (fnExit2);
                        puts ("Main function.");
                        return 0;
                        }
                        

            Output:
            
                        Main function.
            Exit function 2.
            Exit function 1.

            posted @ 2007-11-15 23:47 foobar 閱讀(472) | 評論 (0)編輯 收藏

            2007年6月4日 #

            Initializer lists

            In C++, it is the order of the class inheritance and of the member variables that determine the initialization order, not the order of an initializer list:



            #include 
            <iostream>

            class CSomeClass
            {
            public:
            CSomeClass(
            int n)
            {
            std::cout 
            << "CSomeClass constructor with value ";
            std::cout 
            << n << std::endl;
            }

            }
            ;

            class CSomeOtherClass
            {
            public:
            CSomeOtherClass() 
            //In this example, despite the list order,
            : obj2(2), obj1(1//obj1 will be initialized before obj2.
            {
            //Do nothing.
            }

            private:
            CSomeClass obj1;
            CSomeClass obj2;
            }
            ;

            int main(void)
            {
            CSomeOtherClass obj;
            return 0;
            }

            posted @ 2007-06-04 11:11 foobar 閱讀(210) | 評論 (0)編輯 收藏

            僅列出標題  
            久久精品国产男包| 国产精品一久久香蕉国产线看| 亚洲国产成人久久综合碰碰动漫3d | 久久久久夜夜夜精品国产| 99热热久久这里只有精品68| 蜜桃麻豆www久久国产精品| 亚洲精品乱码久久久久久自慰| 久久久久亚洲精品天堂| 久久婷婷五月综合成人D啪| 亚洲国产精品无码久久久秋霞2| 1000部精品久久久久久久久| 久久人妻少妇嫩草AV蜜桃| 日日噜噜夜夜狠狠久久丁香五月| 青青青伊人色综合久久| 一本色综合久久| 国产高清国内精品福利99久久| 久久亚洲AV无码精品色午夜| 久久er热视频在这里精品| 久久久久久免费视频| 国产精品天天影视久久综合网| 日产精品久久久久久久| 精品久久人人爽天天玩人人妻| 久久久久亚洲AV无码麻豆| 久久这里只精品99re66| 久久亚洲国产精品五月天婷| 亚洲国产精久久久久久久| 久久精品99久久香蕉国产色戒| 国产精品成人久久久| 亚洲а∨天堂久久精品| 国产午夜精品理论片久久| 97精品国产97久久久久久免费| 国产精品国色综合久久| 亚洲午夜久久久久妓女影院| 久久婷婷午色综合夜啪| 久久九色综合九色99伊人| 久久不射电影网| 日韩精品久久久久久| 99国产欧美精品久久久蜜芽| 精品久久久久久无码专区| 久久久久99精品成人片欧美| 久久久久久亚洲AV无码专区|