岸上见林渡 2023-03-23 22:22 采纳率: 100%
浏览 23
已结题

如何让析构函数不清除调用函数里的类对象

今天做“运算符重载”时在类内定义了析构函数,结果执行时发现控制台什么都没输出。删掉析构函数则可以正常运行。
代码如下:

#include <iostream>
using namespace std;
 
class Time{
private:
    int mintue;
    int second;
public:
    Time(){mintue=0;second=0;};
    Time(int m,int s);
    friend Time operator+(Time&,Time&);
    ~Time(){delete(this);};
    int getMintue(){return this->mintue;};
    int getSecond(){return this->second;};
};
Time::Time(int m,int s){
    mintue=m;
    second=s;
}
Time operator+(Time & t1,Time & t2){
    Time t;
    t.mintue=t1.mintue+t2.mintue;
    t.second=t1.second+t2.second;
    if(t.second>=60){
        t.second-=60;
        t.mintue++;
        
    }
    return t;
}

int main(){
    Time t,t_1(2,45),t_2(7,15);
    t=t_1+t_2;
    cout<<"(mintue:second)->"<<t.getMintue()<<":"<<t.getSecond()<<endl;
    return 0;
}

运行结果为空,什么都没有输出,也没有报错

img

我认为导致这个结果的原因可能是** 这个析构函数把我类中函数内定义的对象给销毁了,导致传了一个空参返回输出**

有没有能创建析构函数后正常运行的修改意见呢?还是说在这种需要调用到类内部函数有对象的类是不能使用含有“delete”的析构函数呢?或者其他可能?
希望能得到大家的指点 QWQ

  • 写回答

3条回答 默认 最新

  • threenewbee 2023-03-23 22:28
    关注

    ~Time(){delete(this);};
    这根本错误
    析构函数里delete你自己new的对象即可,不要去delete别的东西。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月31日
  • 已采纳回答 3月23日
  • 创建了问题 3月23日

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值