C++ copy构造函数浅拷贝

这篇博客介绍了C++中拷贝构造函数的工作原理,包括浅拷贝和深拷贝的概念。通过示例代码展示了默认拷贝构造函数如何进行浅拷贝,以及如何自定义拷贝构造函数实现深拷贝,确保对象内部资源的有效复制。此外,还讨论了函数参数传递和函数返回值时拷贝构造函数的调用情况。
摘要由CSDN通过智能技术生成

1、调用情况

#include <iostream>
using namespace std;
class stu
{
public:
    stu()
    {

    }
    stu(const stu& a)//默认拷贝构造(浅拷贝),与普通构造函数不同他会执行
    {

    }
};

//以下两种函数也可以调用copy构造函数
void fun(stu a)//函数参数传递对象的值
{

}
stu fun()//函数返回对象
{
    stu db;
    return db;//返回一个临时构造函数
}

int main()
{
    stu db;
    //stu db1(db);
    //stu db1= db;
    //stu db1=stu(db);
    //stu* db1 = new stu(db);//同类现有对象,只有对象初始化(赋值)才会调用拷贝构造

    //fun(db)
    fun();

    system("pause");
    return 0;
}

2、功能:逐个复制非静态成员(成员的复制为浅复制)值,复制的是成员的值。

#include <iostream>
using namespace std;

class stu
{
public:
    int b;
    char c[4];
    stu()//模仿默认构造函数也是浅拷贝
    {
        b = 12;
        c[0] = 'a';
        strcpy_s(c,4, "bcd");//strcpy_s(c,4,"bcd");
    }

    stu(const stu& a)//拷贝构造
    {
        this->b = a.b;
        strcpy_s(this->c, 4, a.c);
    }

};
int main()
{
    stu db;
    cout << db.b << " " << db.c << endl;

    
    stu db1(db);
    cout << db1.b << " " << db1.c << endl;

    system("pause");
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

clown_30

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值