<kbd id="daqct"></kbd>

  • <nav id="daqct"></nav>
    <wbr id="daqct"><pre id="daqct"></pre></wbr>
    <wbr id="daqct"></wbr>
    <form id="daqct"><th id="daqct"></th></form>
    更多課程 選擇中心

    C/C++培訓
    達內IT學院

    400-111-8989

    C++類和對象的概念

    • 發布:C++培訓
    • 來源:學習筆記
    • 時間:2017-06-16 17:35

    C++是一門面向對象的編程語言,理解C++,首先要理解類(Class)和對象(Object)這兩個概念。

    C++中的類(Class)可以看做C語言中結構體(Struct)的升級版。結構體是一種構造類型,可以包含若干成員變量,每個成員變量的類型可以不同;可以通過結構體來定義結構體變量,每個變量擁有相同的性質。例如:

  • #include<stdio.h>

  • //定義結構體 Student

  • structStudent{

  • //結構體包含的成員變量

  • char*name;

  • intage;

  • floatscore;

  • };

  • //顯示結構體的成員變量

  • voiddisplay(structStudentstu){

  • printf("%s的年齡是 %d,成績是 %f\n",stu.name,stu.age,stu.score);

  • }

  • intmain(){

  • structStudentstu1;

  • //為結構體的成員變量賦值

  • stu1.name="小明";

  • stu1.age=15;

  • stu1.score=92.5;

  • //調用函數

  • display(stu1);

  • return0;

  • }

  • 運行結果:
    小明的年齡是 15,成績是 92.500000

    C++中的類也是一種構造類型,但是進行了一些擴展,類的成員不但可以是變量,還可以是函數;通過類定義出來的變量也有特定的稱呼,叫做“對象”。例如:

  • #include<stdio.h>

  • //通過class關鍵字類定義類

  • classStudent{

  • public:

  • //類包含的變量

  • char*name;

  • intage;

  • floatscore;

  • //類包含的函數

  • voidsay(){

  • printf("%s的年齡是 %d,成績是 %f\n",name,age,score);

  • }

  • };

  • intmain(){

  • //通過類來定義變量,即創建對象

  • classStudentstu1; //也可以省略關鍵字class

  • //為類的成員變量賦值

  • stu1.name="小明";

  • stu1.age=15;

  • stu1.score=92.5f;

  • //調用類的成員函數

  • stu1.say();

  • return0;

  • }

  • 運行結果與上例相同。

    對于熟悉C++的讀者,這段代碼并不規范,請忽略這一細節,本節的重點是引入類和對象的概念。這套C++教程是在C的基礎上編寫的,我并不希望一開始就提出過多的C++概念,讓讀者吃不消,我希望讀者從C逐漸過渡到C++,從第二章開始編寫規范的C++代碼。也就是說,包括本節在內,第一章有很多不規范的C++代碼,再次請熟悉C++的讀者忽略。

    class 和 public 都是C++中的關鍵字,初學者請先忽略 public(后續會深入講解),把注意力集中在 class 上。

    C語言中的 struct 只能包含變量,而C++中的 class 除了可以包含變量,還可以包含函數。display() 是用來處理成員變量的函數,在C語言中,我們將它放在了 struct Student 外面,它和成員變量是分離的;而在C++中,我們將它放在了 class Student 內部,使它和成員變量聚集在一起,看起來更像一個整體。

    結構體和類都可以看做一種由用戶自己定義的復雜數據類型,在C語言中可以通過結構體名來定義變量,在C++中可以通過類名來定義變量。不同的是,通過結構體定義出來的變量還是叫變量,而通過類定義出來的變量有了新的名稱,叫做對象(Object)。

    在第二段代碼中,我們先通過 class 關鍵字定義了一個類 Student,然后又通過 Student 類創建了一個對象 stu1。變量和函數都是類的成員,創建對象后就可以通過點號.來使用它們。

    可以將類比喻成圖紙,對象比喻成零件,圖紙說明了零件的參數(成員變量)及其承擔的任務(成員函數);一張圖紙可以生產出多個具有相同性質的零件,不同圖紙可以生產不同類型的零件。

    類只是一張圖紙,起到說明的作用,不占用內存空間;對象才是具體的零件,要有地方來存放,才會占用內存空間。

    在C++中,通過類名就可以創建對象,即將圖紙生產成零件,這個過程叫做類的實例化,因此也稱對象是類的一個實例(Instance)。

    有些資料也將類的成員變量稱為屬性(Property),將類的成員函數稱為方法(Method)。

    面向對象編程(Object Oriented Programming,OOP)

    類是一個通用的概念,C++、Java、C#、PHP 等很多編程語言中都支持類,都可以通過類創建對象。可以將類看做是結構體的升級版,C語言的晚輩們看到了C語言的不足,嘗試加以改善,繼承了結構體的思想,并進行了升級,讓程序員在開發或擴展大中型項目時更加容易。

    因為 C++、Java、C#、PHP 等語言都支持類和對象,所以使用這些語言編寫程序也被稱為面向對象編程,這些語言也被稱為面向對象的編程語言。C語言因為不支持類和對象的概念,被稱為面向過程的編程語言。

    在C語言中,我們會把重復使用或具有某項功能的代碼封裝成一個函數,將擁有相關功能的多個函數放在一個源文件,再提供一個對應的頭文件,這就是一個模塊。使用模塊時,引入對應的頭文件就可以。

    而在C++中,多了一層封裝,就是類(Class)。類由一組相關聯的函數、變量組成,你可以將一個類或多個類放在一個源文件,使用時引入對應的類就可以。下面是C和C++項目組織方式的對比:

    圖1:C語言中項目的組織方式
     

     圖2:C++中項目的組織方式


    不要小看類(Class)這一層封裝,它有很多特性,極大地方便了中大型程序的開發,它讓C++成為面向對象的語言。

    面向對象編程在代碼執行效率上絕對沒有任何優勢,它的主要目的是方便程序員組織和管理代碼,快速梳理編程思路,帶來編程思想上的革新。

    面向對象編程是針對開發中大規模的程序而提出來的,目的是提高軟件開發的效率。不要把面向對象和面向過程對立起來,面向對象和面向過程不是矛盾的,而是各有用途、互為補充的。如果你希望開發一個貪吃蛇游戲,類和對象或許是多余的,幾個函數就可以搞定;但如果開發一款大型游戲,那你絕對離不開面向對象。

    預約申請免費試聽課

    填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

    上一篇:工作3年的程序員應該具備什么技能
    下一篇:C語言指針難點在哪?C語言指針難學的4點原因

    C語言創建windows窗口實例

    C++回調函數是什么?

    C++ shared_ptr和動態數組

    C語言有哪些關鍵詞,C語言44個關鍵詞大全

    • 掃碼領取資料

      回復關鍵字:視頻資料

      免費領取 達內課程視頻學習資料

    • 視頻學習QQ群

      添加QQ群:1143617948

      免費領取達內課程視頻學習資料

    Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

    選擇城市和中心
    黑龍江省

    吉林省

    河北省

    湖南省

    貴州省

    云南省

    廣西省

    海南省

    欧美三级片,白洁外传,第四色播日韩AV第一页,啪啪免费观看大全av 百度 好搜 搜狗
    <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>