c++語言封裝與c語言封裝

c語言的封裝屬性和行為分開處理,類型檢測(cè)不夠

c++中的封裝 嚴(yán)格類型轉(zhuǎn)換檢測(cè),讓屬性和行為綁定到一起,屬性和行為作為一個(gè)整體來表示生活中的事物。

控制權(quán)限:

class和struct是一個(gè)意思,唯一的不同 默認(rèn)權(quán)限,

public(公共權(quán)限)

struct默認(rèn)權(quán)限是public ,內(nèi)外部可以直接訪問

private(私有權(quán)限,子類不可以訪問)

class默認(rèn)的權(quán)限是private 私有權(quán)限,外部不可以訪問,內(nèi)部可以訪問
建議將類的成員變量設(shè)置為私有

protected(保護(hù)權(quán)限,子類可以訪問)

protected保護(hù)權(quán)限 類內(nèi)部可以訪問 當(dāng)前類的子類可以訪問,類外部不可以訪問

c中封裝

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Person

{

    char name[64];

    int age;

};

struct Dog

{

    char name[64];

    int age;

};
void PersonEat(struct Person* p)
{

    printf("%s 吃飯\n", p->name);

};
void DogEat(struct Dog * d)
{
    printf("%s 吃狗糧\n", d->name);
}
void test()
{
    struct Dog d;
    strcpy(d.name,"旺財(cái)");
    DogEat(&d);
    struct Person p;
    strcpy(p.name, "小王");
    //  PersonEat(&p);
    DogEat(&p); 
    //可以正常調(diào)用
}

int main()
{
    test();


return EXIT_SUCCESS;
}

c++中封裝

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;

struct Person

{

    char name[64];

    int age;

    void PersonEat()
    {
        cout << name << "吃飯" << endl;
    }

};
struct Dog

{

    char name[64];

    int age;

    void dogEat()
    {
        cout << name << "吃飯" << endl;
    }

};
void test()
{
    Person p1;
    strcpy(p1.name, "小王");
        p1.PersonEat();
    //p1.DogEat(); //類型錯(cuò)誤
}

int main()
{


    test();



    return EXIT_SUCCESS;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容