• <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 閱讀(196) | 評論 (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 閱讀(331) | 評論 (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 閱讀(464) | 評論 (0)編輯 收藏

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

            僅列出標題  
            性欧美大战久久久久久久久| 国内精品久久久久久99| 国产精品九九久久免费视频| 久久国产精品99久久久久久老狼 | 伊人久久免费视频| 久久影视国产亚洲| 亚洲熟妇无码另类久久久| 97久久精品国产精品青草| 精品久久久久久无码人妻热| 久久天天躁夜夜躁狠狠| 国产精品久久久久久福利漫画 | www.久久热.com| 欧美日韩精品久久久久| 久久精品国产91久久综合麻豆自制| 中文成人无码精品久久久不卡 | 人妻无码精品久久亚瑟影视| 欧美综合天天夜夜久久| 久久亚洲精品成人AV| 伊人久久精品影院| 狠狠久久综合| 色综合久久综精品| 久久久久久九九99精品| 伊人色综合九久久天天蜜桃| 久久精品国产精品国产精品污| 伊人久久大香线蕉亚洲五月天| 久久综合九色欧美综合狠狠| 草草久久久无码国产专区| 国产精品久久自在自线观看| 久久久久免费看成人影片| 久久精品成人欧美大片| 一级女性全黄久久生活片免费 | 久久国产精品视频| 久久综合九色综合久99| 99久久精品午夜一区二区| 伊人久久大香线蕉亚洲五月天| 久久久久一本毛久久久| 久久久久人妻一区精品果冻| 久久精品国产99国产精品| 精品视频久久久久| 久久亚洲高清综合| 亚洲精品国产综合久久一线|