求解两行代码什么意思?

class SimpleCircle

{

public:

SimpleCircle();         
SimpleCircle(int);
SimpleCircle(const SimpleCircle &);

~SimpleCircle(){} //?????????
void setRadius(int); //?????????
int getRadius() const;
private:

int* itsRadius;     //指向其半径值的指针;

};

SimpleCircle::SimpleCircle()
{

itsRadius = new int(5);

}

SimpleCircle::SimpleCircle(int radius)
{

itsRadius = new int(radius);

}

SimpleCircle::SimpleCircle(const SimpleCircle & rhs)
{

int val = rhs.getRadius();
itsRadius = new int(val);

}

int SimpleCircle::getRadius()const
{

return*itsRadius;

}

int main() {
SimpleCircle CircleOne, CircleTwo(9);

cout << "CircleOne:" << CircleOne.getRadius() << endl;

cout << "CircleTwo:" << CircleTwo.getRadius() << endl;

return 0;

}

如果把这两行换成:~SimpleCircle();为什么说我的析构函数未定义呢?

c++

2个回答

如果你换成

~SimpleCircle();

那么你只是声明了这个函数,并没有定义它。而析构函数的调用是自动的,所以运行报错,你需要在类外定义析构函数。

SimpleCircle::~SimpleCircle()
{
    //do
}

如果换成

~SimpleCircle(){};

说明你在类内就已经定义了该函数,并且函数体为空。

单纯的声明一个函数是不需要花括号的,例如在头文件里声明函数。

如果把这两行换成:~SimpleCircle();为什么说我的析构函数未定义呢?
因为你少了{}花括号,应该是~SimpleCircle(){};

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问