c++的一个奇怪的问题

来源:百度知道 编辑:UC知道 时间:2024/06/08 00:14:29
#include<iostream.h>
class circle
{public:
double r,h;
virtual void area()=0;
virtual void volume()=0;
};
class sphere:public circle
{public:
void area()
{double re;
re=4*r*r*3.14;
cout<<"the area of sphere is"<<re<<endl;
}
void volume()
{cout<<"the volume of sphere is"<<3*3.14*r*r/4<<endl;}
};

class column:public circle
{public:
double h;
void area()
{cout<<"the area of volumn is"<<2*3.14*r*r+2*3.14*r<<endl;}
void volume()
{cout<<"the area of volumn is"<<3.14*r*r*h<<endl;}
};
void main()
{double ra=1.23,hi=4.321;
circle *p;
sphere sp;
column vo;
p->r=ra;
p=&sp;
p->area();
p=&vo; p->h=hi;
p->volume();
}
这个程序通过了编译和链接不过就是不能执行请问有人可以帮个忙吗?
请问wannan

你的指针p没初始化
circle *p=(circle *)malloc(sizeof(circle));
记得加个头文件#include<stdlib.h>这是个标准库文件,里面包含了一些系统的命令,我这里用的是内存分配的。
stdlib.h里面定义了五种类型、一些宏和通用工具函数。
宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等等,具体也讲不清楚。常用的函数如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。
具体的内容你自己可以打开编译器的include目录里面的stdlib.h头文件看看。