0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

類和對象是什么?

汽車電子技術(shù) ? 來源:C語言Plus ? 作者:Maye426 ? 2023-02-27 15:36 ? 次閱讀

前面講的面向過程和面向?qū)ο?,大家都有了基本的了解,也用struct定義了類,那么接下來咱們就用C++提供的另一個關(guān)鍵字class來定義類,同樣的我們還是使用前面的學(xué)生結(jié)構(gòu),首先直接把struct改成class看有沒有什么問題。

class Stu //定義學(xué)生結(jié)構(gòu)
 {
     int id;
     int age;
     char name[10];
     void init(int sid = 0, int sage = 0, const char* sname = "NULL")
{
         id = sid;
         age = sage;
         strcpy(name, sname);
    }
     void showStuInfo()
{
         cout << id << " " << age << " " << name << endl;
    }
 };

 int main()
{
     Stu cPlus;//前面講過在C++中可以省略,struct關(guān)鍵字
     cPlus.init();// error “Stu::init”: 無法訪問 private 成員
     cPlus.showStuInfo();//error “Stu::showStuInfo”: 無法訪問 private 成員

     return 0;
 }

編譯代碼會發(fā)現(xiàn),有兩處錯誤,大概的意思都是說無法訪問private成員,那么什么意思呢?這就是struct和class的不同之處了:

  • struct 默認(rèn)是公有(public)的:即在類的外面可以訪問類里面的成員(如果沒有指定權(quán)限訪問限定符)
  • class 默認(rèn)是私有(private)的:即在類的外面不可以訪問類的成員(如果沒有指定權(quán)限訪問限定符)

相同點(diǎn):

  • 都可以使用權(quán)限訪問限定符來修改類成員,在外部的訪問權(quán)限(除此之外struct和class沒有任何區(qū)別)

對于上面的代碼,我們可以這樣修改一下在類中的最上面加上public,這樣就可以在外面隨意訪問成員啦

圖片

如果說只想讓外部能夠訪問成員函數(shù),而不想讓外部訪問到成員變量,那么可以這樣

圖片

至于protected訪問限定符,是作用與派生類中的,這個后面會講到(對于類的外部來說,和private一樣)

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • C++
    C++
    +關(guān)注

    關(guān)注

    21

    文章

    2085

    瀏覽量

    73302
  • Class
    +關(guān)注

    關(guān)注

    0

    文章

    52

    瀏覽量

    19676
  • Struct
    +關(guān)注

    關(guān)注

    0

    文章

    31

    瀏覽量

    10843
收藏 人收藏

    評論

    相關(guān)推薦

    OLE對象是什么

    [OPTIONS]中OLE對象是什么?
    發(fā)表于 07-15 16:29

    關(guān)于LabVIEW 及其對象使用的疑問

    各位大神,我一直有個關(guān)于LabVIEW中使用的問題。。。。當(dāng)我建好一個之后,直接將其拖到一個VI的程序框圖中,相當(dāng)于一個對象,在這個VI中我可以隨便操作這個
    發(fā)表于 11-23 22:20

    JAVA和C++區(qū)別

    。 8 字符串 c和c十十不支持字符串變量,在c和c十十程序中使用Null終止符代表字符串的結(jié)束,在Java中字符串是用對象(strinR和stringBuffer)來實(shí)現(xiàn)的,這些對象是
    發(fā)表于 10-10 14:50

    3分鐘看懂Python面向對象

    Python雖然是解釋型語言,但從設(shè)計(jì)之初就已經(jīng)是一門面向對象的語言,對于Python來說一切皆為對象。正因?yàn)槿绱耍赑ython中創(chuàng)建一個對象是很容易的,當(dāng)然如果習(xí)慣面向過程或者
    發(fā)表于 06-08 14:20

    VEE對象是否支持阿拉伯字符?

    大家好,有人知道VEE對象是否支持阿拉伯字符?我假設(shè)他們是Microsoft Windows應(yīng)用程序的一部分,但如果有人有阿拉伯語運(yùn)行的VEE應(yīng)用程序的屏幕截圖,我真的很感激!有人設(shè)法讓VEE對象
    發(fā)表于 04-02 06:17

    LabVIEW面向對象的ActorFramework(1)

    領(lǐng)域。面向對象是一種對現(xiàn)實(shí)世界理解和抽象的方法,是計(jì)算機(jī)編程技術(shù)發(fā)展到一定階段后的產(chǎn)物。 面向對象是相對于面向過程來講的,面向對象方法,把相關(guān)的數(shù)據(jù)和方法組織為一個整體來看待,從更高的層次來進(jìn)行系統(tǒng)
    發(fā)表于 02-10 14:09

    對象分配內(nèi)存錯誤怎么辦

    請大神幫忙,萬分感謝?。?!操作系統(tǒng):ucosIII 芯片:STM32F103我的建立比較多。對象是指針CCarriage*gCar;分配內(nèi)存語句:gCar = new CCarriage
    發(fā)表于 05-25 09:51

    對象_實(shí)驗(yàn)2

    c++面向對象課程實(shí)驗(yàn)指導(dǎo)書題目_對象。
    發(fā)表于 01-14 16:24 ?0次下載

    Java教程之零點(diǎn)起飛學(xué)Java的對象資料說明

    對象是進(jìn)行面向對象編程的基礎(chǔ)。是具有相同屬性特征和行為規(guī)則的多個對象的一種統(tǒng)一描述,對象是
    發(fā)表于 02-20 10:41 ?14次下載
    Java教程之零點(diǎn)起飛學(xué)Java的<b class='flag-5'>類</b>與<b class='flag-5'>對象</b>資料說明

    Java實(shí)驗(yàn):對象的擴(kuò)展

    Java實(shí)驗(yàn):對象的擴(kuò)展
    發(fā)表于 07-08 15:36 ?20次下載
    Java實(shí)驗(yàn):<b class='flag-5'>類</b>和<b class='flag-5'>對象</b>的擴(kuò)展

    Labview面向對象編程快速入門教程

    在面向對象編程中, 用來表示通用特性。 例如,假設(shè)有一個描述汽車的。 中定義了各種汽車的通用特性。對象是
    發(fā)表于 07-31 08:00 ?81次下載
    Labview面向<b class='flag-5'>對象</b>編程快速入門教程

    什么是不可變對象 不可變對象存儲可以抵御哪些威脅

    新建的對象。 基本數(shù)據(jù)類型的包裝以及String對象都是不可變對象。 不可變對象和可變
    的頭像 發(fā)表于 09-19 11:44 ?2470次閱讀

    Python中的對象詳解

    Python 是一種面向對象的編程語言,它支持對象是一種用戶自定義的數(shù)據(jù)類型,用于定義對象的屬性和方法。
    的頭像 發(fā)表于 04-20 16:53 ?964次閱讀

    Objects:為對象提供對象技術(shù)

    Objects 對象簡介 IRIS 通過以下對象提供對象技術(shù): %Library.RegisteredObject 、 %Library
    的頭像 發(fā)表于 09-20 14:14 ?322次閱讀
    Objects:為<b class='flag-5'>對象</b><b class='flag-5'>類</b>提供<b class='flag-5'>對象</b>技術(shù)

    SystemC TLM中的接口

    SystemC TLM中的接口 在SystemC TLM中,接口是一個C++的抽象。抽象中的所有方法都是用“=0”標(biāo)識表示的純虛函數(shù)。C++不允許創(chuàng)建抽象對象,因?yàn)槌橄?/div>
    的頭像 發(fā)表于 11-02 15:54 ?636次閱讀