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();为什么说我的析构函数未定义呢?
如果你换成
~SimpleCircle();
那么你只是声明了这个函数,并没有定义它。而析构函数的调用是自动的,所以运行报错,你需要在类外定义析构函数。
SimpleCircle::~SimpleCircle()
{
//do
}
如果换成
~SimpleCircle(){};
说明你在类内就已经定义了该函数,并且函数体为空。
单纯的声明一个函数是不需要花括号的,例如在头文件里声明函数。
如果把这两行换成:~SimpleCircle();为什么说我的析构函数未定义呢?
因为你少了{}花括号,应该是~SimpleCircle(){};