一个c++题目请高手看看怎么做?

来源:百度知道 编辑:UC知道 时间:2024/05/24 10:45:09
根据图形类设计一个图形链表,链表里的元素可以是矩形、三角形或者圆形,比如利用虚函数提供的多态性实现一个函数,统计链表中各种图形的个数,比如三角形个数:2,圆形:1,矩形:1。
这是我写的一段代码,可是不成功
请高手看看怎样修改或者重新写
#include<iostream>
using namespace std;
class Graph
{
public:
virtual void count(){};
};
class Rectangle:public Graph
{
int n;
public:
Rectangle():n(0){}
void count()
{
n++;
}
void printn()
{
cout<<"Rectangle :"<<n<<endl;
}
};
class Circle:public Graph
{
int n;
public:
Circle():n(0){}
void count()
{
n++;
}
void printn()
{
cout<<"Circle :"<<n<<endl;
}
};
class Triangle:public Graph
{
int n;
public:
Triangle():n(0){}
void count()
{
n++;
}
void printn()
{
cout<<"Triangle :"<<n<<endl;
}
};
cla

改好了, 存在诸多问题, 首先你的基类没有虚析构; 然后你用成员变量n来计算实例个数是得不到结果的, 应该用一个静态的类成员变量来存储; 另外链表的构造有些问题; 最后是程序结束后没有释放new出来的内存.

#include<iostream>
using namespace std;

class Graph
{
public:
virtual void count(){};
virtual ~Graph(){};
};

class Rectangle:public Graph
{
static int n;
public:
void count()
{
n++;
}
void printn()
{
cout<<"Rectangle :"<<n<<endl;
}
};
int Rectangle::n = 0;

class Circle:public Graph
{
static int n;
public:
void count()
{
n++;
}
void printn()
{
cout<<"Circle :"<<n<<endl;
}
};
int Circle::n = 0;

class Triangle:public Graph
{
static int n;
public:
void count()
{
n++;
}
void printn()
{
cout<<"Triangle :"<<n