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

            martin

            thinking

            常用鏈接

            統計

            software

            最新評論

            C++的一些基礎知識

            C++中類包含三種成員訪問說明符:public, private 和 protected.
            在程序能訪問類對象的任何地方都可以訪問任何在成員訪問說明符public后面聲明的數據成員和成員函數.成員訪問符private后面的數據成員和成員函數只能由該類的成員函數或友元訪問.基類的protected成員只能被基類的成員和友元已及派生類的成員和友元訪問.
            在C++中還存在三中繼承方式:public, private, protected.
             
            對于它們的論述可以在任意一本關于C++的書中都可以找到.大家對public繼承都比較熟悉.但我們偶爾也會看到private繼承.private繼承時基類中的public,private成員變成派生類中的private成員.基類中的private成員在派生類中隱藏.
             
            這里簡單介紹一下以下兩種情況的異同:
            (1)B private 繼承A
            (2)A是B的一個私有成員的異同.
             
            相同點:A的接口(public 成員函數)都只對B開放,不對外開放. 
            不同點:在(1)中A的public, protected成員都為B的private成員,B的成員函數可以直接訪問.在(2)中A的成員都不是B的成員,并且B不能訪問A的protected成員,要訪問A的public成員也要借助A的對象.
             
            下面再講一些編譯器在構造類時所采取的缺省操作:
            1.如果類沒有聲明構造函數,編譯器會聲明一個默認構造函數.
            2.如果沒有聲明拷貝構造函數,編譯器會隱式地生成一個.
            3.如果沒有聲明賦值操作符,編譯器會隱式地生成一個.
            4.如果沒有聲明析構函數,編譯器會隱式地生成一個.
             
            隱式生成的函數都是public的.
            如果接受一個副本是有效的行為,就該聲明并定義拷貝構造函數和賦值操作符.如果接受一個副本是禁止的,你可以將拷貝構造函數和賦值操作符聲明為private,并且不實現它們,這樣可以阻止編譯器生成缺省的操作,從而防止客戶復制類對象.
             
            下面是代碼實例:
             
            class test{
             
            };
             該類中不包含任何成員,也沒聲明任何方法.編譯器會缺省生成下列方法:
            test::test()
            {
            }
             
            test::~test()
            {
            }
             
            test::test(const test& rt)
            {
             ...
            }
             
            test& test::operator=(const test& rt)
            {
            ...
            }
             
            這些方法都是public的.
             
            如果想阻止編譯器生成缺省的拷貝構造函數,和賦值操作,可以進行如下操作:
            class test{
             
            private:
                test(test& rt);                        //    該方法被定義為private,并且不被實現.
                test& operator=(test& rt);        //    該方法被定義為private,并且不被實現.
            };
             

            posted on 2009-03-04 14:51 martin_yahoo 閱讀(1410) 評論(2)  編輯 收藏 引用

            評論

            # re: C++的一些基礎知識 2009-03-05 19:00 Sandy

            這里簡單介紹一下以下兩種情況的異同:
            (1)B private 繼承A
            (2)A是B的一個私有成員的異同

            你好,對于第二中情況,我不是很懂,A是B的一個私有成員的異同
            class A
            {
            };

            class B: private A
            {
            };

            這是第一種情況,

            那么第二種是什么情形呢?
              回復  更多評論   

            # re: C++的一些基礎知識[未登錄] 2009-03-05 22:00 martin_yahoo

            @Sandy
            第一種情況
            class B : private A
            {
            ....
            };
            B 從A私有繼承.
            第二種情況:
            class B{
            ...
            private:
            A a;
            ...
            };
            B含有一個A對象為實例,并且為B的私有成員.  回復  更多評論   

            久久99热精品| 国产亚洲欧美成人久久片| 亚洲国产一成久久精品国产成人综合| 一本综合久久国产二区| 亚洲午夜无码久久久久| 9999国产精品欧美久久久久久| 国产毛片欧美毛片久久久| 91精品日韩人妻无码久久不卡| 狠狠色丁香久久婷婷综合图片| 97精品国产91久久久久久| 亚洲午夜无码AV毛片久久| 久久综合久久综合久久| 久久久久久夜精品精品免费啦| 久久天天躁狠狠躁夜夜2020老熟妇| 性欧美大战久久久久久久| 国产成人精品久久一区二区三区| 久久久久亚洲精品男人的天堂| 亚洲欧美日韩久久精品第一区| 久久亚洲AV无码西西人体| 国产精品久久永久免费| 久久精品国产亚洲AV麻豆网站| 久久精品国产只有精品66 | 久久精品夜夜夜夜夜久久| 久久精品中文字幕第23页| 一本久久久久久久| 亚洲国产成人久久精品动漫| 日韩亚洲欧美久久久www综合网| 看久久久久久a级毛片| 丁香色欲久久久久久综合网| 久久久久高潮综合影院| 久久亚洲AV无码精品色午夜麻豆| 久久亚洲精品成人无码网站| 久久天天躁狠狠躁夜夜躁2014| 国产精品久久久久蜜芽| 精品国产青草久久久久福利| 久久久久av无码免费网| 无码国产69精品久久久久网站| www性久久久com| 久久精品国产清高在天天线| 亚洲美日韩Av中文字幕无码久久久妻妇 | 国产精品成人精品久久久|