客観的事物から類を抽象化する例

1869 ワード

プログラムを書いて、矩形の幅と高さを入力して、出力面積と周長
・長方形の属性-幅と高さ
・2つの変数で、それぞれ幅と高さを表す
・矩形への操作
・幅と高さの設定
・面積計算
・周長の計算
class Rectangle{
    public:
        int w, h;
    void Init(int w_, int h_){
        w = w_;
        h = h_;
    }
    int Area(){
        return w * h;
    };
    int Perimeter(){
        return 2 * (w + h);
    }
};

int main(){
    int w, h;
    Rectangle r;//r     
    cin>>w>>h;
    r.Init(w, h);
    cout<

・クラス定義変数-->クラスのインスタンス-->オブジェクト
・オブジェクトのメモリ容量
・オブジェクトのサイズ=すべてのメンバー変数のサイズの和
・E.g.Rectangleクラスのオブジェクト、sizeof(Rectangle)=8
・各オブジェクトにそれぞれ独自の記憶スペースがある
・あるオブジェクトのメンバー変数が変更され、他のオブジェクトに影響しない
・対象間の演算
・オブジェクト間で=で代入可能
・=!=><>=<=比較する
・これらの演算子が「リロード」されていない場合
使用法1:対象名メンバー名
    Rectangle r1, r2;
    r1.w = 5;
    r2.Init(3, 4);

使用法2:ポインタ->メンバー名
    Rectangle r1, r2;
    Rectangle *p1 = &r1;
    Rectangle *p2 = &r2;
    p1->w = 5;
    p2->Init(3, 4);//Init   p2      
用法3:引用名.メンバー名
    Rectangle r2;
    Rectangle & rr = r2;
    rr.w = 5;
    rr.Init(3,4);//rr    ,r2    

別の出力方法:
    void PrintRectangle(Rectangle &r){
        cout<
クラスのメンバー関数の別の書き方
・メンバー関数体とクラスの定義を別々に書く
    class Rectangle{
        public:
            int w, h;
            int Area();//         
            int Perimeter();
            void Init(int w_, int h_);
    }
    int Rectangle::Area(){
        return w * h;
    }
    int Rectangle::Perimeter(){
        return 2 * (w + h);
    }
    void Rectangle::Init(int w_, int h_){
        w = w_;
        h = h_;
    }

呼び出しパス:オブジェクト/オブジェクトのポインタ/オブジェクトの参照
北京大学に感謝します!!