真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

類的真正形態(tài)(十三)

        我們之前在 C++ 中表示類的時候,是用 struct 表示的。那么經(jīng)過這些改進,結(jié)構(gòu)體 struct 變得越來越不像它在  C 語言中的樣子了。因此在 C++ 總提供了新的關(guān)鍵字 class 用于類定義,class 和 struct 的用法是完全相同的。

站在用戶的角度思考問題,與客戶深入溝通,找到宣漢網(wǎng)站設(shè)計與宣漢網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、主機域名、網(wǎng)頁空間、企業(yè)郵箱。業(yè)務(wù)覆蓋宣漢地區(qū)。

        那么 class 和 struct 有什么區(qū)別呢?在用 struct 定義類時,所以的成員默認訪問級別為 public;在用 class定義類時,所有的成員的默認訪問級別為 private。我們來以代碼為例進行分析

#include 

struct A
{
    // default to public
    int i;

    // default to public
    int getI()
    {
        return i;
    }
};

class B
{
    
    // default to private
    int i;

    // default to private
    int getI()
    {
        return i;
    }
};

int main()
{
    A a;
    B b;
    
    a.i = 2;
    
    printf("a.getI() = %d\n", a.getI());
    
    b.i = 3;
    
    printf("b.getI() = %d\n", b.getI());
    
    return 0;
}

        我們分別用 struct 和 class 定義了類A 和 類B,我們分別給它們的 i 進行賦值,再調(diào)用 getI 函數(shù)進行打印。依照我們之前所說的,類B 的應(yīng)該打印會出錯,我們看看編譯結(jié)果

類的真正形態(tài)(十三)

        我們看到它確實報錯了,說類B 中的成員是私有的。我們在第 17 行聲明為 public,再次編譯

類的真正形態(tài)(十三)

        我們看到這次編譯通過,并且成功的打印出它們的值了。

        下來我們開發(fā)一個用于四則運算的類:提供 setOperator 函數(shù)設(shè)置運算類型;提供 setParameter 函數(shù)設(shè)置運算參數(shù);提供 result 函數(shù)進行運算,其返回值表示運算的合法性,通過引用參數(shù)返回結(jié)果。在 C++ 中的類支持聲明和實現(xiàn)的分離,也就是將類的實現(xiàn)和定義分開。 .h 頭文件中只有類的聲明:成員變量和成員函數(shù)的聲明。 .cpp 源文件中完成類的其它實現(xiàn):成員函數(shù)的具體實現(xiàn)。

Operator.h 源碼

#ifndef _OPERATOR_H_
#define _OPERATOR_H_

class Operator
{
private:
    char mOp;
    double mP1;
    double mP2;
    
public:
    bool setOperator(char op);
    void setParameter(double p1, double p2);
    bool result(double& r);
};

#endif

Operator.cpp 源碼

#include "Operator.h"

bool Operator::setOperator(char op)
{
    bool ret = false;
        
    if( (op == '+') || (op == '-') || (op == '*') || (op == '/') )
    {
        ret = true;
        mOp = op;
    }
    else
    {
        mOp = '\0';
    }
        
    return ret;
}

void Operator::setParameter(double p1, double p2)
{
    mP1 = p1;
    mP2 = p2;
}
    
bool Operator::result(double& r)
{
    bool ret = true;
        
    switch( mOp )
    {
        case '/':
            if( (-0.000000001 < mP2) && (mP2 < 0.000000001) )
            {
                ret = false;
            }
            else
            {
                r = mP1 / mP2;
            }
            break;
        case '+':
            r = mP1 + mP2;
            break;
        case '*':
            r = mP1 * mP2;
            break;
        case '-':
            r = mP1 - mP2;
            break;
        default:
            ret = false;
            break;
    }
        
    return ret;
}

test.cpp 源碼

#include 
#include "Operator.h"

int main()
{
    Operator op;
    double r = 0;
    
    op.setParameter(9, 3);
    op.setOperator('/');
    
    if( op.result(r) )
    {
        printf("r = %lf\n", r);
    }
    else
    {
        printf("Calculate error!\n");
    }
    
    return 0;
}

        我們編譯下看看是否如我們所愿

類的真正形態(tài)(十三)

        我們看到已經(jīng)正確執(zhí)行,那么我們看到頭文件和實現(xiàn)的源文件分開來,代碼可維護性提高了。test.cpp 文件中寫的代碼很少,很清晰。這便是聲明和實現(xiàn)分離的效果了。通過對類的學(xué)習(xí),總結(jié)如下:1、C++ 引進了新的關(guān)鍵字 class 用于定義類,struct 和 class 的區(qū)別在于默認訪問級別不同;2、在 C++ 中的類支持聲明和實現(xiàn)的分離:在頭文件中聲明類,在源文件中實現(xiàn)類。

        歡迎大家一起來學(xué)習(xí) C++ 語言,可以加我QQ:243343083。


本文名稱:類的真正形態(tài)(十三)
網(wǎng)站鏈接:http://weahome.cn/article/jggjsi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部