关于C++中析构函数的问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 21:41:26
1. 编写一个点类Point演示构造函数、复制构造函数、析构函数及其调用顺序。设计要求如下:
(1) Point类只有一个构造函数,参数为两个,参数的缺省值为0。
(2) 测试的主程序如下:
int main()
{
Point b(7.8, 9.8), c(34.5, 67.8);
Point a=c;
cout<<”两点之距为:”<<a.distance(b)<<endl;
return 0;

#include<iostream>
#include<cmath>
using namespace std;
class Point
{
public:
Point(double a=0,double b=0);
~Point();
Point(Point &c);
double distance(Point &d);
private:
double x,y;
};
Point::Point(double a,double b)
{
x=a;
y=b;
}
Point::~Point()
{
cout<<<<"Destructed."<<endl;
}
Point::Point(Point &c)
{
x=c.x;
y=c.y;
}
double Point::distance(Point &d)
{
double r;
r=sqrt(x*x+y*y);
return r;
}
int main()
{
Point b(7.8, 9.8), c(34.5, 67.8);
Point a=c;
cout<<"两点之距为:"&

先调用子类的析构函数,后调用父类.
在子类析构函数中加入COUT<<"退出子类";
在父类析构函数中加入COUT<<"退出父类"

不知所云.

保证必须两个参数才能构造的话
你就得把缺省参数去掉

但是感觉你自己都不知道自己在说什麼

看来你不明白析构的作用,它是在对象销毁时自动调用的啊,就象构造一样是你在创建对象的时候自动调用的啊,你不能直接去调用的,析构顺序与你的构造顺序一般是相反的。