赋值运算符是什么结合


You
You 2024-01-02 16:49:07 49865
分类专栏: 资讯

赋值构造(赋值运算符)
当一类对象给另一个类对象赋值时,就会调用赋值构造
void opeator = (类&)
{

}
什么时会调用:对象 = 对象;
编译器会生成一个缺省的赋值构造,它负责把一个对象的内存拷贝给另一个对象。
什么情况需要实现赋值构造:
当需要深拷贝时,需要自己动手实现赋值构造,也就是拷贝构造与赋值构造需要同时实现。
编译器会自动生成四个成员函数:构造、析构、赋值构造、拷贝构造。

#include <iostream>
#include <cstring>

using namespace std;

class User
{
    char* name;
    char pass[7];
public:
    User(const char* name,const char* pass)
    {
         this->name = new char[strlen(name)+1];
        strcpy(this->name,name);
        strcpy(this->pass,pass);
    }
    void show(void)
    {
        cout<<name <<" " <<pass <<endl;
    }

 ~User(void)
    {
        cout<<"析构"<<&name <<endl;
        delete[] name;
    }

    User(User& that)
    {
        name = new char[strlen(that.name)];
        strcpy(name,that.name);
        strcpy(pass,that.pass);
        cout << "我是拷贝构造" << endl;
    }
 
    User& operator = (const User& that)
    {
        cout<< this <<" "<< &that << endl;
        if(this != &that)
        {
            cout<<"我是赋值构造"<<endl;
            // 释放旧空间
           delete[] name;
 
            // 申请新空间
            name = new char[strlen(that.name)+1];

            // 拷贝内容
           strcpy(name,that.name);
           strcpy(pass,that.pass);
 
            /*
            User temp(that);
            swap(name,temp.name);
            */
        }
        return *this;
    }

};

int main()
{
    User u1("a","aa");
    User u2("bbbb","bb");
    User u3("ccc","cc");
    //赋值构造
    u1 = u1;
    //u2 = u1 = u3;
    u1.show();
    u2.show();
    u3.show();
 
}

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=34195
赞同 0
评论 0 条
YouL0
粉丝 0 发表 582 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2969
【软件正版化】软件正版化工作要点  2888
统信UOS试玩黑神话:悟空  2860
信刻光盘安全隔离与信息交换系统  2746
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1280
grub引导程序无法找到指定设备和分区  1249
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  169
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  168
点击报名 | 京东2025校招进校行程预告  165
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  161
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!