GubE 2019-11-17 17:09 采纳率: 91.7%
浏览 177
已采纳

求解两行代码什么意思?

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();为什么说我的析构函数未定义呢?

展开全部

  • 写回答

2条回答 默认 最新

  • alongname 2019-11-18 11:33
    关注

    如果你换成

    ~SimpleCircle();
    

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

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

    如果换成

    ~SimpleCircle(){};
    

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部