构造函数 析构函数 拷贝构造函数 ~~~~~~~~~~拷贝构造函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构造函数 析构函数 拷贝构造函数 ~~~~~~~~~~拷贝构造函数相关的知识,希望对你有一定的参考价值。

拷贝构造函数

1.拷贝构造函数作用:

①:程序中需要新建立一个对象,并用另一个同类的对象对它初始化;

②:当函数的参数为类的对象时,需要建立一个实参的拷贝;

③:函数的返回值是类的对象;

2 格式:

注意:关键字const是为了保护参数值,防止被改变 

 

///在类外定义,加域符 ::
Box::Box(const Box &b) 
{
    hei=b.hei;
    len=b.len;
    wid=b.wid;
}

 

3. 使用情况即考虑到其作用时

① 建立一个新的对象

#include<iostream>
using namespace std;

class box{
private:
    int a,b,c;
public:
    box(int x,int y,int z):a(x),b(y),c(z)
        {
            cout<<"构造函数"<<endl;
        }

    box(const box &q)
    {
        a=q.a;
        b=q.b;
        c=q.c;
        cout<<"拷贝构造函数"<<endl;
    }
    ~box()
    {
       cout<<"析构函数"<<endl;
    }

    int volum()
    {
        return a*b*c;
    }
};
int main()
{
    box A(4,5,6);
    box B(A);
    cout<<A.volum()<<endl;
    cout<<B.volum()<<endl;

}

② 当函数的参数为类的对象时,需要建立一个实参的拷贝;

#include<iostream>
using namespace std;

class box{
private:
    int a,b,c;
public:
    box(int x,int y,int z):a(x),b(y),c(z)
        {
            cout<<"构造函数"<<endl;
        }

    box(const box &q)
    {
        a=q.a;
        b=q.b;
        c=q.c;
        cout<<"拷贝构造函数"<<endl;
    }
    ~box()
    {
       cout<<"析构函数"<<endl;
    }

    int volum()
    {
        return a*b*c;
    }
};
    void fun(box M)///形参是类的对象
    {
        cout<<M.volum()<<endl;
    }

int main()
{
    box A(4,5,6);
    fun(A);///将A传入
    cout<<A.volum()<<" A "<<endl;

}

③ 函数的返回值是类的对象

#include<iostream>
using namespace std;

class box{
private:
    int a,b,c;
public:
    box(int x,int y,int z):a(x),b(y),c(z)
        {
            cout<<"构造函数"<<endl;
        }

    box(const box &q)
    {
        a=q.a;
        b=q.b;
        c=q.c;
        cout<<"拷贝构造函数"<<endl;
    }
    ~box()
    {
       cout<<"析构函数"<<endl;
    }

    int volum()
    {
        return a*b*c;
    }
};
    box WW()
    {
        box B(1,2,3);
        return B;
    }

int main()
{
    box A(0,0,0);
    A=WW();
    cout<<A.volum()<<endl;
}
///box B是在WW()函数定义的,在调用WW()结束后,B的生命周期结束,
///在函数WW()结束前的return语句调用了拷贝构造函数,赋值给A。

 

以上是关于构造函数 析构函数 拷贝构造函数 ~~~~~~~~~~拷贝构造函数的主要内容,如果未能解决你的问题,请参考以下文章

构造函数 析构函数

c++类大四个默认函数-构造函数 析构函数 拷贝构造函数 赋值构造函数

C++类和对象(构造函数析构函数拷贝构造函数赋值运算符重载Const成员)详细解读

C++类和对象(构造函数析构函数拷贝构造函数赋值运算符重载Const成员)详细解读

C++类和对象(构造函数析构函数拷贝构造函数赋值运算符重载Const成员)详细解读

试验C++构造函数,析构函数,拷贝构造函数和赋值构造函数