#include<iostream.h>
class circle
{
private:
int *r;
float zhouchang;
public:
circle(int R);
circle(circle &p);
~circle();
void display();
};
circle::circle(int R)
{
r=new int(2);
r=&R;
cout<<"构造完成"<<endl;
}
circle::circle(circle &p)
{
r=new int(2);
*r=*(p.r);
cout<<"拷贝完成"<<endl;
}
circle::~circle()
{
delete r;
cout<<"析构完成"<<endl;
}
void circle::display()
{
zhouchang=3.14*2*(*r);
cout<<"半径为:"<<r<<"周长为:"<<zhouchang<<endl;
}
void main()
{
circle A(1);
circle B(A);
A.display();
B.display();
} 错出哪了?
class circle
{
private:
int *r;
float zhouchang;
public:
circle(int R);
circle(circle &p);
~circle();
void display();
};
circle::circle(int R)
{
r=new int(2);
r=&R;
cout<<"构造完成"<<endl;
}
circle::circle(circle &p)
{
r=new int(2);
*r=*(p.r);
cout<<"拷贝完成"<<endl;
}
circle::~circle()
{
delete r;
cout<<"析构完成"<<endl;
}
void circle::display()
{
zhouchang=3.14*2*(*r);
cout<<"半径为:"<<r<<"周长为:"<<zhouchang<<endl;
}
void main()
{
circle A(1);
circle B(A);
A.display();
B.display();
} 错出哪了?
解决方案 »
- 送分咯,进来看看!
- 怎样在实现橡皮擦功能,能擦除位图中的杂点
- 不同FORMVIEW之间的值传递
- 我想实现多台电脑与一台电脑通讯.但是一点头绪也没有.大家帮帮忙!在线等!!
- SDK中如何获得本地时间?
- ★★今天装了SQL SERVER 2000,看了程序组几个能运行的东东不知所然,都不知做什么用?我应该看什么书?
- 用CreateInstance成功创建Com对象后不能使用其方法,请高手指点。在线等待
- 小数计算问题
- 一个古老而神秘的问题,请各位高手进门指教(菜货千万不要进!会吓到你们的!)
- 请问Win32高手VirtualAlloc()分配的存储页面保护属性中EXECUTE与READ有什么不同?
- C++ in MFC
- 界面显示问题--高手进
{
r=new int(2);
*r=R; // 这里
cout<<"构造完成"<<endl;
}
{
r=new int(2); ----------------------->这个为什么搞个数组?
r=&R;-------------------------------->*r = R;
cout<<"构造完成"<<endl;
}直接定义int r是不是好一些?
{
r=new int(2);
r=&R;
cout<<"构造完成"<<endl;
}原来代码里 r=&R 将指针 r 指向了一个临时变量
circle A(1) 析构时,delete指向已经不存在的一个临时变量的指针,于是程序就挂了。
改成 *r=R 就可以了
程序还有个出错在:cout<<"半径为:"<<r<<"周长为:"<<zhouchang<<endl;
应该改为:cout<<"半径为:"<<*r<<"周长为:"<<zhouchang<<endl;
所以程序delete r没任何问题.
我也运行过了,没问题!
谢谢上面的前辈指教!