溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C++--類與封裝

發(fā)布時(shí)間:2020-07-29 08:07:11 來(lái)源:網(wǎng)絡(luò) 閱讀:445 作者:淡淡_小孩 欄目:編程語(yǔ)言

一.類的組合
電腦一般而言是由CPU、內(nèi)存、主板、鍵盤和硬盤等部件組合而成。下圖可以表示該關(guān)系
C++--類與封裝
A.類通常分為以下兩個(gè)部分
1.類的實(shí)現(xiàn)細(xì)節(jié)
2.類的使用方式
C++--類與封裝
1.當(dāng)使用類時(shí),不需要關(guān)心其實(shí)現(xiàn)細(xì)節(jié)
2.當(dāng)創(chuàng)建類時(shí),才需要考慮其內(nèi)部實(shí)現(xiàn)細(xì)節(jié)

二.封裝的基本概念
C++中類的封裝
1.成員變量:C++中用于表示類屬性的變量
2.成員函數(shù):C++中用于表示類行為的函數(shù)
3.C++中可以給成員變量和成員函數(shù)定義訪問(wèn)級(jí)別--public:成員變量和成員函數(shù)可以在類的內(nèi)部和外界訪問(wèn)和調(diào)用;private:成員變量和成員 函數(shù)只能在類的內(nèi)部被訪問(wèn)和調(diào)用
代碼示例

#include <stdio.h>
struct Biology {
    bool living;
};
struct Animal : Biology {
    bool movable;
    void findFood() { }
};
struct Plant : Biology {
    bool growable;
};
struct Beast : Animal {
    void sleep() { }
};
struct Human : Animal {
    void sleep() { }
    void work() { }
};
struct Gril:human
{
private:
    int age;
    int weight;
public:
    void print()
    {
        age = 22;
        weight = 48;     
        printf("I'm a girl, I'm %d years old.\n", age);
        printf("My weight is %d kg.\n", weight);
    }
};
struct Boy:human
{
private:
    int height;
    int salary;
public:
    int age;
    int weight;
    void print()
    {
        height = 175;
        salary = 9000;      
        printf("I'm a boy, my height is %d cm.\n", height);
        printf("My salary is %d RMB.\n", salary);
    } 
};
int main()
{
    Gril g;
    Boy b;
    return 0;
}

輸出結(jié)果
C++--類與封裝
三.類成員的作用域
1.類成員的作用域都只在類的內(nèi)部,外部無(wú)法直接訪問(wèn)
2.成員函數(shù)可以直接訪問(wèn)成員變量和調(diào)用成員函數(shù)
3.類的外部可以通過(guò)變量訪問(wèn)publi成員
4.類成員的作用域與訪問(wèn)級(jí)別沒(méi)有關(guān)系
C++中用struct定義的類中所有成員默認(rèn)為public
代碼實(shí)現(xiàn)

#include <stdio.h>
int i = 1;
struct Test
{
private:
    int i;
public:
    int j;   
    int getI()
    {
        i = 3;        
        return i;
    }
};
int main()
{
    int i = 2;
    Test test;
    test.j = 4;
    printf("i = %d\n", i);              // i = 2;局部變量
    printf("::i = %d\n", ::i);          // ::i = 1;全部變量
    // printf("test.i = %d\n", test.i);    // Error
    printf("test.j = %d\n", test.j);    // test.j = 4
    printf("test.getI() = %d\n", test.getI());  // test.getI() = 3

    return 0;
}

小結(jié)
1.類通常可以分為使用方式和內(nèi)部細(xì)節(jié)兩部分
2.類的封裝機(jī)制使得使用方式和內(nèi)部細(xì)節(jié)相分離
3.C++中通過(guò)定義類成員的訪問(wèn)級(jí)別實(shí)現(xiàn)封裝機(jī)制
4.public成員可以在類的內(nèi)部和外界訪問(wèn)和調(diào)用
5.private成員只能在類的內(nèi)部被訪問(wèn)和調(diào)用

在C++中提供新的關(guān)鍵字class用于類定義
在用struct定義類時(shí),所有成員的默認(rèn)訪問(wèn)級(jí)別為public
在用class定義類時(shí),所有成員的默認(rèn)訪問(wèn)級(jí)別為private

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI