c++ 类和对象(一)

重点知识

调用拷贝构造函数的3种情况
普通的构造函数是在对象创建时被调用,而拷贝构造函数在一下三种情况都会被调用:
(1) 当用类的一个对象去初始化该类的另一个对象时,如:
Rectangle p2(p1);//用对象p1初始化对象p2,拷贝构造函数被调用(代入法);
Rectangle p3=p1;//用对象p1初始化对象p3,拷贝构造函数被调用(赋值法)

(2) 当函数的形参是类的对象,调用函数进行形参和实参结合时。例如:

fun1(Rectangle p)//形参是类Rectangle的对象
{
p.disp();
}
int main()
{
Rectangle p1(10,20);
fun1(p1);//调用函数fun1时,实参p1是类Rectangle的对象
//将调用拷贝构造函数,初始化形参对象p;
return 0;
}

在main()函数中,执行语句“fun(p1)”;便是这种情况。在调用这种函数时,对象p1是实参,用它来初始化被调用函数的形参p时,需要调用拷贝构造函数。

(3) 当函数的返回值是对象,函数执行完成返回调用者时。例如:
Rectangle fun(2)
{
Rectangle p1(10,30);
return p1; //函数的返回值是对象;
}

int main()
{
Rectangle p2;
p2=fun(); //函数执行完成,返回调用者时,调用拷贝构造函数
return 0;
}

在函数fun2()内,执行语句“return p1;”时将会调用拷贝构造函数将p1的值复制到一个无名对象中,这个无名对象是编译系统在主程序中临时创建的,函数运行结束时对象p1消失,但临时对象会存在于语句“p2=fun()”中,执行完这个语句后,临时无名对象的使命也就完成了,该临时对象便自动消失了。

建立cylinder,类cylinder的构造函数被传递了两个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;
}

你可能感兴趣的:(c++)