C++析构函数只声明而不定义的问题

C++析构函数只声明而不定义的问题

现附上一个简单的小例子(计算圆柱体体积)

#include<iostream>
using namespace std;
//计算圆柱体体积

class cylinder//圆柱体
{
    
    
	public:
		double r;
		double h;
		double volume;

		cylinder();
		~cylinder();
		double * calculate(cylinder *);
		double getindex();

};
cylinder::cylinder()//构造函数
{
    
    
	cout << "请输入圆柱体的高:";
	cin >> r;
}

double cylinder::getindex()
{
    
    
	return r;
}

int main() {
    
    

	cylinder a;
	cout <<a.getindex()<<endl;

	system("pause");

	return 0;
}

在这个案例中,类cylinder中声明了析构函数~cylinder,却没有在后面给出析构函数的定义,从而导致程序报错
在这里插入图片描述
如何修改错误呢?
大家只需要把析构函数的声明去掉就可以了!

给大家解释一下:

  • 构造函数主要是在对象创建时,给对象中的一些数据成员赋值,主要目的就是来初始化对象。
  • 析构函数的功能是用来释放一个对象的,在对象删除前,用它来做一些清理工作,与构造函数正好相反。即:对象销毁前调用析构函数
  • 如果程序员没有定义析构函数,那么析构函数是程序默认生成的。
  • 如果程序员在类中声明了析构函数,那么程序就不会自动生成默认的析构函数,此时如果程序员不写析构函数的定义,那么析构函数就为空!无法释放对象,从而导致程序报错。

大家可以参考这篇博客:C++构造函数、析构函数、复制(拷贝)构造函数的注意点

猜你喜欢

转载自blog.csdn.net/weixin_48622537/article/details/109819082