• <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++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              6 隨筆 :: 14 文章 :: 0 評(píng)論 :: 0 Trackbacks

            2007年12月3日 #

            Advanced Test in C: The 0x10 Best Questions for C Programmers
            posted @ 2007-12-03 15:12 foobar 閱讀(195) | 評(píng)論 (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) | 評(píng)論 (0)編輯 收藏

             

             1 # include <iostream.h>
             2 void output( int x); // 函數(shù)聲明
             3 void output( float x); // 函數(shù)聲明
             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, 因?yàn)樽詣?dòng)類型轉(zhuǎn)換
            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) | 評(píng)論 (0)編輯 收藏

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

            僅列出標(biāo)題  
            久久亚洲欧美国产精品| 久久涩综合| 久久精品国产亚洲沈樵| 国产精品xxxx国产喷水亚洲国产精品无码久久一区| 99精品国产在热久久无毒不卡| 爱做久久久久久| 久久99久国产麻精品66| 99久久国产亚洲高清观看2024| 久久免费观看视频| 丁香五月网久久综合| 午夜精品久久久久成人| 亚洲av日韩精品久久久久久a | 人人狠狠综合久久亚洲| 奇米影视7777久久精品| 久久丝袜精品中文字幕| 久久96国产精品久久久| 伊人久久大香线焦AV综合影院| 久久久91精品国产一区二区三区 | 亚洲Av无码国产情品久久| 久久狠狠高潮亚洲精品| 国产精品久久新婚兰兰 | 久久亚洲国产成人影院| 国产99久久九九精品无码| 99久久国产热无码精品免费 | 久久无码AV一区二区三区| 久久96国产精品久久久| 久久香综合精品久久伊人| 亚洲中文字幕无码久久综合网 | 成人综合伊人五月婷久久| 伊人久久亚洲综合影院| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 久久精品欧美日韩精品| 久久久久免费精品国产| 99精品国产免费久久久久久下载| 精品国产婷婷久久久| 国产精品久久久久乳精品爆| 久久免费高清视频| 久久e热在这里只有国产中文精品99 | 久久久精品国产| 久久夜色精品国产亚洲| 精品久久人人爽天天玩人人妻|