91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

類的真正形態(十三)

發布時間:2020-06-29 19:11:13 來源:網絡 閱讀:376 作者:上帝之子521 欄目:編程語言

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

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

#include <stdio.h>

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 進行賦值,再調用 getI 函數進行打印。依照我們之前所說的,類B 的應該打印會出錯,我們看看編譯結果

類的真正形態(十三)

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

類的真正形態(十三)

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

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


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 <stdio.h>
#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;
}

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

類的真正形態(十三)

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


        歡迎大家一起來學習 C++ 語言,可以加我QQ:243343083

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

余庆县| 德保县| 文水县| 白山市| 海原县| 临颍县| 昌都县| 沛县| 梧州市| 合山市| 临邑县| 馆陶县| 邯郸县| 昌宁县| 漳浦县| 吕梁市| 鞍山市| 新建县| 虞城县| 阳城县| 扎囊县| 武乡县| 济源市| 南皮县| 普宁市| 铜梁县| 临城县| 将乐县| 藁城市| 临漳县| 双江| 台东市| 道真| 南开区| 昆明市| 延川县| 东兰县| 高青县| 尼勒克县| 广南县| 兴山县|