为什么有时候使用析构函数会让运行时间增加且系统返回值不为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;
}
析构函数的主要作用是在类对象被销毁时,释放对象在堆栈上分配的资源。如果没有适当释放这些资源,可能会导致内存泄漏等问题。因此,使用析构函数是一种良好的编程习惯,也是C++语言的特点之一。
然而,如果类的析构函数的实现过于复杂或者释放的资源过多,就可能导致程序运行时间增加,甚至影响程序性能。此外,在程序中调用析构函数不会显式返回任何值,而是隐式地返回void类型。因此,如果函数的返回值不为0,可能是由其他原因造成的,而不是析构函数调用导致的。
总之,析构函数是一个重要的概念,但是在具体应用时需要考虑平衡资源的释放和程序性能,避免出现不必要的问题。
函数重载:是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数 或 类型 或 顺序)必须
不同,常用来处理实现功能类似数据类型不同的问题
int Add(int left, int right) {
return left+right;
}
double Add(double left, double right) {
return left+right;
}
long Add(long left, long right) {
return left+right;
}
int main()
{
Add(10, 20);
Add(10.0, 20.0);
Add(10L, 20L);
return 0;
}