嵌入式学习23(C++重载运算符 下)

本文详细介绍了C++中重载赋值运算符=及自增/自减运算符的实现方法,包括如何实现对象的复制和赋值,以及在进行自增/自减操作时的不同行为。

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

这篇主要介绍 重载(= ++ –)

#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;

//对象复制:调用拷贝构造(在对象实例化时复制另一对象的内容)
//对象赋值:调用重载=运算符(两个对象已经生成,并互相赋值)

class object
{
    public:
        object(int);
        object(void);
        //注意:深拷贝-成员变量中有指针
        object(object&);
        void show();
        ~object();
    //重载赋值运算符
        object& operator=(object& );//本质:方法
    //重载自增/减运算
        object operator++();
        object operator++(int);
    public:
        int* value; 
};
//有参
object::object(int v)
{
    this->value=new int(v);
}
object::object(void):value(NULL)
{
    //this->value=NULL;
}
//重载拷贝构造
object::object(object& o)
{
    //先申请空间,再赋值
    this->value=new int(*o.value);
}
//析构
object::~object()
{
    cout<<"析构函数"<<this->value<<endl;
    if(NULL!=this->value)
    {
        delete this->value;
        this->value=NULL;
    }
}
object& object::operator=(object& o2)
{
    if(NULL!=this->value)//先释放
        delete this->value;
    this->value=new int(*o2.value); //再申请
    //*this=o2;
    cout<<"重载="<<endl;
    return *this;
}
//重载运算符 ---前自加(先自加,再取值)
object object::operator++(void)
{
    object result;
//先自加
    *this->value+=1;
//再取值
    result=*this;   
    return result;
}
//重载运算符--- 后自加 (先取值,再自加)
object object::operator++(int)
{
//定义对象
    object result(*this);//先取值
//再自加
    *(this->value)+=1;  

    return result;  
}
void object::show()
{
    if(NULL!=this->value)
        cout<<*(this->value)<<endl;
}
int main()
{
/*
    object o1;
    object o2(2);
    o1.show();
    o2.show();
    //赋值:运算符只能识别基本类型
    o1=o2;//可以:o1与o2的内存空间布局相同(类型相同)
//  o1>o2;
    *o2.value=10000;//只是通过o2修改内容,没有修改o1的内容
    o1.show();
    o2.show();
//  string str1="hello world";
    //o1=str1;//不同类型不能赋值
    int a=100;
    int b;
    printf("%d\n",a=1);
//自加
    cout<<"a++="<<a++<<endl;
    ++o1;
*/


    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值