欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++類和對象到底是什么

 更新時間:2021年09月25日 16:36:22   作者:編程幫  
C++ 是一門面向?qū)ο蟮木幊陶Z言,理解 C++,首先要理解類(Class)和對象(Object)這兩個概念。下面和小編一起來學(xué)習(xí)吧

1、C++ 中的類

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

例如:

#include <stdio.h>
//定義結(jié)構(gòu)體 Student
struct Student{
    //結(jié)構(gòu)體包含的成員變量
    char *name;
    int age;
    float score;
};
//顯示結(jié)構(gòu)體的成員變量
void display(struct Student stu){
    printf("%s的年齡是 %d,成績是 %f\n", stu.name, stu.age, stu.score);
}
int main(){
    struct Student stu1;
    //為結(jié)構(gòu)體的成員變量賦值
    stu1.name = "小明";
    stu1.age = 15;
    stu1.score = 92.5;
    //調(diào)用函數(shù)
    display(stu1);
    return 0;
}

運行結(jié)果:

小明的年齡是 15,成績是 92.500000

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

例如:

#include <stdio.h>
//通過class關(guān)鍵字類定義類
class Student{
public:
    //類包含的變量
    char *name;
    int age;
    float score;
    //類包含的函數(shù)
    void say(){
        printf("%s的年齡是 %d,成績是 %f\n", name, age, score);
    }
};
int main(){
    //通過類來定義變量,即創(chuàng)建對象
    class Student stu1;  //也可以省略關(guān)鍵字class
    //為類的成員變量賦值
    stu1.name = "小明";
    stu1.age = 15;
    stu1.score = 92.5f;
    //調(diào)用類的成員函數(shù)
    stu1.say();
    return 0;
}

運行結(jié)果與上例相同。

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

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

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

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

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

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

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

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

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

2、面向?qū)ο缶幊蹋∣bject Oriented Programming,OOP)

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

因為 C++ 、Java、C# 、PHP 等語言都支持類和對象,所以使用這些語言編寫程序也被稱為面向?qū)ο缶幊?,這些語言也被稱為面向?qū)ο蟮木幊陶Z言。C語言因為不支持類和對象的概念,被稱為面向過程的編程語言。

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

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

不要小看類(Class)這一層封裝,它有很多特性,極大地方便了中大型程序的開發(fā),它讓 C++ 成為面向?qū)ο蟮恼Z言。

面向?qū)ο缶幊淘诖a執(zhí)行效率上絕對沒有任何優(yōu)勢,它的主要目的是方便程序員組織和管理代碼,快速梳理編程思路,帶來編程思想上的革新。

面向?qū)ο缶幊淌轻槍﹂_發(fā)中大規(guī)模的程序而提出來的,目的是提高軟件開發(fā)的效率。不要把面向?qū)ο蠛兔嫦蜻^程對立起來,面向?qū)ο蠛兔嫦蜻^程不是矛盾的,而是各有用途、互為補充的。如果你希望開發(fā)一個貪吃蛇游戲,類和對象或許是多余的,幾個函數(shù)就可以搞定;但如果開發(fā)一款大型游戲,那你絕對離不開面向?qū)ο蟆?/p>

到此這篇關(guān)于C++類和對象到底是什么的文章就介紹到這了,更多相關(guān)C++類和對象內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于QT制作一個TCPServer與TCPClient的通信

    基于QT制作一個TCPServer與TCPClient的通信

    這篇文章主要為大家詳細(xì)介紹了如何基于QT制作一個TCPServer與TCPClient的通信,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • C/C++ Qt 數(shù)據(jù)庫與Chart歷史數(shù)據(jù)展示

    C/C++ Qt 數(shù)據(jù)庫與Chart歷史數(shù)據(jù)展示

    這篇文章主要介紹了Qt利用Qchart組件展示數(shù)據(jù)庫中的歷史數(shù)據(jù)。文中的示例代碼講解清晰,具有一定的學(xué)習(xí)和工作價值,感興趣的小伙伴可以學(xué)習(xí)一下
    2021-12-12
  • C++設(shè)計模式之訪問者模式

    C++設(shè)計模式之訪問者模式

    這篇文章主要介紹了C++設(shè)計模式之訪問者模式,本文講解了什么是訪問者模式、訪問者模式的UML類圖、訪問者模式的實現(xiàn)代碼等內(nèi)容,需要的朋友可以參考下
    2014-10-10
  • C語言詳細(xì)講解if語句與switch語句的用法

    C語言詳細(xì)講解if語句與switch語句的用法

    用 if 語句可以構(gòu)成分支結(jié)構(gòu),它根據(jù)給的條件進行判定,以決定執(zhí)行哪個分支程序段,C 語言中還有另外一種分支語句,就是 switch 語句
    2022-05-05
  • C++深入講解對象的銷毀之析構(gòu)函數(shù)

    C++深入講解對象的銷毀之析構(gòu)函數(shù)

    構(gòu)造函數(shù)在創(chuàng)建對象時被系統(tǒng)自動調(diào)用,而析構(gòu)函數(shù)(Destructor)在對象被撤銷時被自動調(diào)用,相比構(gòu)造函數(shù),析構(gòu)函數(shù)要簡單的多
    2022-04-04
  • C++如何在一個函數(shù)內(nèi)返回不同類型(三種方法)

    C++如何在一個函數(shù)內(nèi)返回不同類型(三種方法)

    C++?中要在一個函數(shù)內(nèi)返回不同類型的值,你可以使用?C++17?引入的?std::variant?或?std::any,或者使用模板和多態(tài),下面將分別介紹這些方法,需要的朋友可以參考下
    2023-12-12
  • 深入淺析STL vector用法

    深入淺析STL vector用法

    這篇文章給大家介紹 stl vector用法,主要知識點在如何恰當(dāng)?shù)氖褂盟鼈兊某蓡T函數(shù),涉及到條件函數(shù)和函數(shù)指針在迭代算法中的使用,對stl vector用法感興趣的朋友可以參考下本文
    2015-10-10
  • C/C++ break和continue區(qū)別及使用方法

    C/C++ break和continue區(qū)別及使用方法

    這篇文章主要介紹了C/C++ break和continue區(qū)別及使用方法的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • C語言安全之?dāng)?shù)組長度與指針實例解析

    C語言安全之?dāng)?shù)組長度與指針實例解析

    這篇文章主要介紹了C語言安全之?dāng)?shù)組長度與指針,需要的朋友可以參考下
    2014-07-07
  • C++?OpenCV實現(xiàn)二維碼檢測功能

    C++?OpenCV實現(xiàn)二維碼檢測功能

    這篇文章主要介紹了如何利用C++?OpenCV實現(xiàn)二維碼檢測功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-01-01

最新評論