「已注销」 2023-04-17 15:05 采纳率: 90.2%
浏览 9
已结题

C++析构函数造成的错误

为什么有时候使用析构函数会让运行时间增加且系统返回值不为0?

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;

class password{
    private:
        int N;
        char *b;
    public:
        password(int _n,char* _b){
            N=_n;
            b=_b;
        }
        
        ~password(){
            delete []b;
        }
        
        void cal(){
            int i=0;
            while(isalpha(b[i])){
                b[i]=(b[i]-'a'+N)%26+'a';
                i++;
            }
            i=0;
            while(b[i])cout<<b[i++];
        }
};


int main(){
    int n;
    char a[1000000];
    cin>>n;cin>>a;
    password P(n,a);
    P.cal();
    return 0;
}

  • 写回答

2条回答 默认 最新

  • apples_kk 2023-04-17 15:11
    关注

    析构函数的主要作用是在类对象被销毁时,释放对象在堆栈上分配的资源。如果没有适当释放这些资源,可能会导致内存泄漏等问题。因此,使用析构函数是一种良好的编程习惯,也是C++语言的特点之一。

    然而,如果类的析构函数的实现过于复杂或者释放的资源过多,就可能导致程序运行时间增加,甚至影响程序性能。此外,在程序中调用析构函数不会显式返回任何值,而是隐式地返回void类型。因此,如果函数的返回值不为0,可能是由其他原因造成的,而不是析构函数调用导致的。

    总之,析构函数是一个重要的概念,但是在具体应用时需要考虑平衡资源的释放和程序性能,避免出现不必要的问题。

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

报告相同问题?

问题事件

  • 系统已结题 6月13日
  • 已采纳回答 6月5日
  • 修改了问题 4月17日
  • 创建了问题 4月17日

悬赏问题

  • ¥15 高价求中通快递查询接口
  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?