亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

淺析c與c++中struct的區別

2020-01-26 15:58:04
字體:
來源:轉載
供稿:網友

這里有兩種情況下的區別。
(1)C的struct與C++的class的區別。
(2)C++中的struct和class的區別。
在第一種情況下,struct與class有著非常明顯的區別。C是一種過程化的語言,struct只是作為一種復雜數據類型定義,struct中只能定義成員變量,不能定義成員函數(在純粹的C語言中,struct不能定義成員函數,只能定義變量)。例如下面的C代碼片斷:

復制代碼 代碼如下:

        struct Point
        {
                int x; // 合法
                int y; // 合法
                void print()
                {
                        printf("Point print/n"); //編譯錯誤
                };
}9        ;


這里第7行會出現編譯錯誤,提示如下的錯誤消息:“函數不能作為Point結構體的成員”。因此大家看到在第一種情況下struct只是一種數據類型,不能使用面向對象編程。

現在來看第二種情況。首先請看下面的代碼:

復制代碼 代碼如下:

       #include <iostream>
        using namespace std;
        class CPoint
        {
                int x;                  //默認為private
                int y;                  //默認為private
                void print()             //默認為private
                {
                        cout << "CPoint: (" << x << ", " << y << ")" << endl;
                }
        public:
                CPoint(int x, int y)      //構造函數,指定為public
                {
                        this->x = x;
                        this->y = y;
                }
                void print1() //public
                {
                        cout << "CPoint: (" << x << ", " << y << ")" << endl;
                }
        };

        struct SPoint
        {
                int x;              //默認為public
                int y;              //默認為public
                void print()         //默認為public
                {
                        cout << "SPoint: (" << x << ", " << y << ")" << endl;
                }
                SPoint(int x, int y)  //構造函數,默認為public
                {
                        this->x = x;
                        this->y = y;
                }
        private:
                void print1()      //private類型的成員函數
                {
                        cout << "SPoint: (" << x << ", " << y << ")" << endl;
                }
        };

        int main(void)
        {
                CPoint cpt(1, 2);  //調用CPoint帶參數的構造函數
                SPoint spt(3, 4);  //調用SPoint帶參數的構造函數

                cout << cpt.x << " " << cpt.y << endl;  //編譯錯誤
                cpt.print();       //編譯錯誤
                cpt.print1();      //合法

                spt.print();      //合法
                spt.print1();     //編譯錯誤
                cout << spt.x << " " << spt.y << endl;  //合法

                return 0;
        }


在上面的程序里,struct還有構造函數和成員函數,其實它還擁有class的其他特性,例如繼承、虛函數等。因此C++中的struct擴充了C的struct功能。那它們有什么不同呢?

main函數內的編譯錯誤全部是因為訪問private成員而產生的。因此我們可以看到class中默認的成員訪問權限是private的,而struct中則是public的。在類的繼承方式上,struct和class又有什么區別?請看下面的程序:

復制代碼 代碼如下:

       #include <iostream>
        using namespace std;
        class CBase
        {
        public:
                void print()                //public成員函數
                {
                        cout << "CBase: print()..." << endl;
                }
        };
        class CDerived1 : CBase        //默認private繼承
        {
        };

        class CDerived2 : public Cbase   //指定public繼承
        {
        };

        struct SDerived1 : Cbase        //默認public繼承
        {
        };

        struct SDerived2 : private Cbase  //指定public繼承
        {
        };

        int main()
        {
                CDerived1 cd1;
                CDerived2 cd2;
                SDerived1 sd1;
                SDerived2 sd2;

                cd1.print();    //編譯錯誤
                cd2.print();
                sd1.print();
                sd2.print();    //編譯錯誤

                return 0;
        }


可以看到,以private方式繼承父類的子類對象不能訪問父類的public成員。class繼承默認是private繼承,而struct繼承默認是public繼承。另外,在C++模板中,類型參數前面可以使用class或typename,如果使用struct,則含義不同,struct后面跟的是“non-type template parameter”,而class或typename后面跟的是類型參數。
事實上,C++中保留struct的關鍵字是為了使C++編譯器能夠兼容C開發的程序。

答案:
分以下所示兩種情況。
C的struct與C++的class的區別:struct只是作為一種復雜數據類型定義,不能用于面向對象編程。
C++中的struct和class的區別:對于成員訪問權限以及繼承方式,class中默認的是private的,而struct中則是public的。class還可以用于表示模板類型,struct則不行。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产视频观看一区| 国产一区二区在线播放| 欧美日韩国产一区中文午夜| 欧美激情免费在线| 国产精品自拍偷拍视频| 国产一区二区三区中文| 日韩精品中文字幕在线观看| 91地址最新发布| 欧美极品少妇xxxxⅹ裸体艺术| 中文字幕在线看视频国产欧美在线看完整| 精品免费在线视频| 日韩亚洲综合在线| 中文字幕亚洲自拍| 欧美日韩中文在线| 久久精视频免费在线久久完整在线看| 欧美精品福利在线| 亚洲精品第一页| 久久香蕉频线观| 中文字幕v亚洲ⅴv天堂| 精品国产乱码久久久久酒店| 精品国产一区二区三区久久久| 亚洲精品wwwww| 久久夜色精品亚洲噜噜国产mv| 国产精品视频永久免费播放| 国产欧美日韩精品专区| 国内伊人久久久久久网站视频| 海角国产乱辈乱精品视频| 成人妇女淫片aaaa视频| 91在线无精精品一区二区| 欧美极品美女电影一区| 午夜精品久久17c| 亚洲肉体裸体xxxx137| 国产亚洲一区二区精品| 成人精品网站在线观看| 亚洲丁香婷深爱综合| 91精品久久久久久综合乱菊| 国产精品视频网| 羞羞色国产精品| 91精品国产高清自在线| 亚洲激情电影中文字幕| 欧美性xxxx极品hd欧美风情| 欧美福利视频网站| 日韩中文在线中文网在线观看| 精品成人69xx.xyz| 国产色视频一区| 97在线精品国自产拍中文| 久久精品视频导航| 狠狠色狠狠色综合日日五| 中文字幕v亚洲ⅴv天堂| 国产一区二区三区在线观看网站| 国产精品亚洲网站| 4k岛国日韩精品**专区| 8x海外华人永久免费日韩内陆视频| 亚洲女在线观看| 91成人福利在线| 久热爱精品视频线路一| 亚洲理论电影网| 国产一区二区三区在线| 97人洗澡人人免费公开视频碰碰碰| 色小说视频一区| 欧美性xxxx18| 97在线视频免费| 成人深夜直播免费观看| 国产成人精品优优av| 久久视频精品在线| 国产成人自拍视频在线观看| 色综合91久久精品中文字幕| 久久久精品国产| 久久久久久久国产精品视频| 成人免费视频a| 国产综合视频在线观看| 亚洲色图15p| 日本中文字幕不卡免费| 精品国产一区二区三区久久狼5月| 亚洲第一视频网| 久久久久久久久久久久av| 91精品国产自产在线| 久久精品青青大伊人av| 国产精品久久久久久久美男| 高清欧美性猛交xxxx黑人猛交| 国产亚洲精品美女久久久| 国产精品久久久久久久久久免费| 欧美成aaa人片免费看| 欧美大荫蒂xxx| 亚洲精品中文字| 国产精品自拍小视频| 亚洲自拍欧美色图| 亚洲视频在线播放| 国产精品 欧美在线| 国产亚洲精品久久久久久777| 亚洲国产精品久久久| 成人午夜一级二级三级| 97在线观看视频国产| 日韩美女视频免费看| 91久久精品在线| 色哟哟入口国产精品| 日韩在线精品视频| 国产欧美精品一区二区| 欧美激情高清视频| 青青草成人在线| 国产999精品久久久| 97在线视频精品| 日韩欧美黄色动漫| 精品久久久久久中文字幕一区奶水| 久久91亚洲人成电影网站| 91在线视频精品| 亚洲精品福利免费在线观看| 亚洲无线码在线一区观看| 欧美性猛xxx| 国产精品成人观看视频国产奇米| 欧美最顶级丰满的aⅴ艳星| 亚洲永久免费观看| 国产主播在线一区| 91精品国产99| 久久精品成人欧美大片| 久久69精品久久久久久国产越南| 欧美成人小视频| 欧美日韩国产黄| 欧美极品少妇xxxxx| 亚洲日韩第一页| 亚洲一区av在线播放| 热门国产精品亚洲第一区在线| 97视频国产在线| 国产一区二区动漫| 一本色道久久88综合日韩精品| 懂色av中文一区二区三区天美| 亚洲欧美制服综合另类| 久久99国产综合精品女同| 日韩高清不卡av| 国产aⅴ夜夜欢一区二区三区| 国产精品久久97| 色偷偷亚洲男人天堂| 国产欧美日韩中文字幕| 亚洲精品视频二区| 成人午夜一级二级三级| 国产精品91久久| 欧美日韩人人澡狠狠躁视频| 欧美午夜宅男影院在线观看| 久久久亚洲精品视频| 国产精品一区二区性色av| 欧美性猛交xxxxx水多| 精品久久久久人成| 久久精品亚洲94久久精品| 亚洲图片欧美日产| 日韩免费高清在线观看| 欧美性猛交xxxx乱大交3| 成人福利在线视频| 日韩成人av在线| 欧美性高跟鞋xxxxhd| 欧美午夜美女看片| 成人福利在线观看| 欧美肥臀大乳一区二区免费视频| 欧美巨猛xxxx猛交黑人97人| 久久人91精品久久久久久不卡| 日韩成人av网址| 国产欧美日韩精品专区| 97国产suv精品一区二区62| 国产精品成人国产乱一区| 日韩av有码在线| 亚洲电影免费在线观看| 欧美在线亚洲一区| 日本一区二区不卡| 91精品免费视频| 亚洲精品永久免费精品|