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++构造函数、析构函数、复制(拷贝)构造函数的注意点

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

袁博特

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值