c++クラスとオブジェクト(一)

5090 ワード

重要な知識
コピーコンストラクタを呼び出す3つのケース一般的なコンストラクタはオブジェクト作成時に呼び出され、コピーコンストラクタは以下の3つのケースで呼び出されます:(1)クラスの1つのオブジェクトでクラスの別のオブジェクトを初期化する場合、例えば:Rectangle p 2(p 1);//オブジェクトp 1でオブジェクトp 2を初期化し、コピー構造関数が呼び出される(代入法).Rectangle p3=p1;//オブジェクトp 1でオブジェクトp 3を初期化し、コピーコンストラクタが呼び出される(付与法)
(2)関数のパラメータがクラスのオブジェクトである場合,関数を呼び出してパラメータと実パラメータを結合する.例:
fun 1(Rectangle p)/形参はクラスRectangleのオブジェクト{p.disp();}int main(){Rectangle p 1(10,20);fun 1(p 1);//関数fun 1を呼び出すと、実パラメータp 1はクラスRectangleのオブジェクト//コピーコンストラクタを呼び出し、パラメータオブジェクトpを初期化する;return 0;}
main()関数では、文「fun(p 1)」を実行します.このような状況です.このような関数を呼び出す場合、オブジェクトp 1は実パラメータであり、呼び出された関数のパラメータpを初期化するために使用される場合、コピー構造関数を呼び出す必要がある.
(3)関数の戻り値がオブジェクトであり,関数実行が呼び出し元への戻りを完了した場合.たとえば、Rectangle fun(2){Rectangle p 1(10,30);return p 1;//関数の戻り値はオブジェクトです.}
int main(){Rectangle p 2;p 2=fun();//関数の実行が完了し、呼び出し元に戻るとコピーコンストラクタreturn 0が呼び出されます.}
関数fun 2()内で、文「return p 1;コピーコンストラクション関数が呼び出され、p 1の値が1つの無名オブジェクトにコピーされます.この無名オブジェクトはコンパイルシステムがメインプログラムで一時的に作成し、関数実行終了時にオブジェクトp 1が消失しますが、一時オブジェクトは文「p 2=fun()」に存在し、この文を実行すると、一時無名オブジェクトの使命も完了し、この一時オブジェクトは自動的に消失します.
cylinderを確立し,クラスcylinderの構造関数は円筒の半径と高さをそれぞれ表す2つのdouble値を伝達した.クラスcylinderを使用して円柱の体積を計算し、double変数に格納します.クラスcylinderにメンバー関数vol()を含む.各cylinderオブジェクトのボリュームを表示します.
#include 
#include 
using namespace std;

const double Pi = 3.14;

class cylinder
{
public:
    cylinder(double R,double H):r(R),h(H)
    {

    }

    void vol()
    {
        v=Pi*r*r*h;
        cout<<"   :"<<v<<endl;
    }

private:
    double r,h,v;
};


int main()
{
    double x,y;
    while(1)
    {


    cin>>x>>y;
    cylinder test(x,y);
    test.vol();
    }
    return 0;
}