看课后题,是不是参考答案这么些不好,int* itsRadius是野指针,是不是指针一定要指向一个变量呢??

ppsdog1956 2006-08-08 01:59:12
原题:
6_8 实现一名为SimpleCircle的简单圆类。其数据成员int*itsRadius为一个指向其半径的指针,存放其半径值。设计对数据成员的各种操作
,给出这个类的完整实现并测试这个类。

答:

#i nclude "iostream.h"
const double Pi=3.1415926;

class SimpleCircle
{
private:
int* itsRadius;
public:
SimpleCircle();
~SimpleCircle();
public:
double Area();
void SetRadius(int nRadius);
double GetRadius();
};

SimpleCircle::SimpleCircle()
{
itsRadius=new int(5);
}

SimpleCircle::~SimpleCircle()
{
delete itsRadius;
}

void SimpleCircle::SetRadius(int nRadius)
{
*itsRadius=nRadius;
}

double SimpleCircle::Area()
{
return Pi**itsRadius**itsRadius;
}

int main()
{
SimpleCircle Circle1;
Circle1.SetRadius(8);
double dArea=Circle1.Area();
cout<<dArea<<endl;
return 0;
}

//////我认为在main函数中 int radius(8);

Circle1.SetRadius(&radius);
这样是不是就安全了!!
...全文
265 4 打赏 收藏 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ppsdog1956 2006-08-08
  • 打赏
  • 举报
回复
我的意思是不在类里分配指针空间,直接指向main函数的radius,但是结果不对。
我的写法是:
const double Pi=3.1415926;
class SimpleCircle
{
private:
int* itsRadius;
public:
SimpleCircle();
~SimpleCircle();
public:
double Area();
void SetRadius(int nRadius);
double GetRadius();
};

SimpleCircle::SimpleCircle()
{
//itsRadius=new int(5);
}

SimpleCircle::~SimpleCircle()
{
//delete itsRadius;
}

void SimpleCircle::SetRadius(int nRadius)
{
itsRadius=&nRadius;
}

double SimpleCircle::Area()
{
return Pi**itsRadius**itsRadius;
}
int main()
{
SimpleCircle Circle1;
int radius(8);
Circle1.SetRadius(radius);
double dArea=Circle1.Area();
cout<<dArea<<endl;


return 0;
}
思危 2006-08-08
  • 打赏
  • 举报
回复
SetRadius(int nRadius) 用一个int作为参数,SetRadius(8) 是正确的
Circle1.SetRadius(&radius); 中radius 是什么,似乎是指针,和要求的参数不一样,编译不通过。
wave_ 2006-08-08
  • 打赏
  • 举报
回复
void SimpleCircle::SetRadius(int *nRadius)
{
itsRadius=nRadius;
}

Maybe it can work normally
小李匪盗 2006-08-08
  • 打赏
  • 举报
回复
为什么要弄个指针呢?

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧