为什么C++中的对象之间能够进行赋值?

本文详细介绍了C++中拷贝构造函数的概念及其工作原理,并通过实例演示了拷贝构造函数如何实现类对象间的赋值操作。文章还讨论了默认拷贝构造函数的行为以及在涉及指针数据成员时可能出现的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++中所有的 类型 变量都是 类 对象的形式,那么C++中类对象之间是怎么进行赋值操作的呢?
主要是因为C++存在拷贝构造函数,拷贝构造函数的定义如下所示:

类名(类名 &);

具体的实例如下所示:

#include <iostream>

using namespace std;

class Date
{
public:
    Date(int y, int m, int d);  // 构造函数 
    Date(const Date &date1);   // 拷贝构造函数                                                                                  
    void showDate();

private:
    int year;
    int month;
    int day;
};

Date::Date(int y, int m, int d)
{
    year = y;
    month = m;
    day = d;
    cout << "调用构造函数" << endl;
}

Date::Date(const Date &date1)
{
    year = date1.year;
    month = date1.month;
    day = date1.day;
    cout << "调用拷贝构造函数" << endl;
}

void Date::showDate()
{
    cout << year << "." << month << "." << day << endl;
} 

int main()
{
    Date d1(2018, 5, 20);

    d1.showDate();

    Date d2 = d1;

    d2.showDate();

    return 0;
}

显示结果为:
调用构造函数
2018.5.20
调用拷贝构造函数
2018.5.20

如果在类中没有自定义拷贝构造函数,则默认的的构造函数的作用是:不同对象的数据成员之间进行赋值操作。
拷贝构造函数使用注意事项:当类中的数据成员存在指针时,使用默认的赋值运算符函数进行对象赋值时,可能会产生错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值