面试问题:如何用类来描述多边形

wangdehao 2007-10-16 05:37:58
今天到某公司面试,副总问我一个问题:
写一个类,描述一下多边形,不知各位老大能否给个答案?
...全文
750 30 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingofice 2008-10-27
  • 打赏
  • 举报
回复
多边形肯定是一个图形,那么可以让其继承于shape,shape可以有一个操作,draw(),画出自己,这就是C++面向对象的继承
多边形无非就是多个顶点,各个相邻顶点剑连线构成边,
那么我们可以让多边形类有一个顶点数组,描述各个点的位置,然后有一个边的数组,描述边是由哪两个顶点连接而成的
这些其实就是多边形类的属性,即,成员变量
然后看,多边形有些什么操作,比如,去掉某一顶点,增加某一个顶点,画出自己(draw)等 这就是多边形类的操作,即,成员函数
这里的draw方法实际上改变了继承而来的shape的draw方法,其实就是C++面向对象的多态,也就是虚函数的使用...

这个例子很经典,很多面向对象入门的书举例和这个非常类似,只不过换成了,描述圆形,三角形,正方形....
zhangyong369 2008-10-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 WinWing 的回复:]
可能就是要你秀下你懂得的C++各方面的特性吧- -
[/Quote]就是
jiannye 2008-10-27
  • 打赏
  • 举报
回复
数据结构哦、、、、、、、、
xtting_8984313 2008-10-27
  • 打赏
  • 举报
回复
这个因为没有确定到底是几个边,所以应该设计成可变的。
1、使用template,边数作为模板参数。
看看c++ templates吧,里面有很好的解释。
swungle 2008-10-20
  • 打赏
  • 举报
回复
看一看类的多态性就可以了!!
sc_valentine21 2008-10-20
  • 打赏
  • 举报
回复

基类:多边形
{virtual void show();}
三角形:public 多边形
{virtual void show();}
四边形:public 多边形
{virtual void show();}
五边形:public 多边形
{virtual void show();}
其他:public 多边形
{virtual void show();}
[当然还有其他特征]
b547292325 2008-10-20
  • 打赏
  • 举报
回复
ai 不会 啊
看看不会啊
我无能为力了
b547292325 2008-10-20
  • 打赏
  • 举报
回复
ai 不会 啊
看看不会啊
我无能为力了
richbirdandy 2008-09-23
  • 打赏
  • 举报
回复
首先是分凹多边形和凸多边形

然后再看有几个边
devil_zuiai 2008-09-23
  • 打赏
  • 举报
回复
typedef struct POINT
{
int xPos;
int yPos;
}

class Polygon
{
vector<POINT> m_vecPoints;
void Draw()
{
..把m_vecPoints中存入的点连一下。
}
}
HNLGDXYJS 2008-09-23
  • 打赏
  • 举报
回复
up
zhuwanglove 2008-09-23
  • 打赏
  • 举报
回复
jf
allenpettle 2008-09-23
  • 打赏
  • 举报
回复
晕,一年前的题目又翻出来了。
flatman 2008-09-23
  • 打赏
  • 举报
回复
哪里来的多边形...

typedef struct stPoint {
INT x; // x co-ordinate 0 based
INT y; // y co-ordinate 0 based
} Point;


typedef vector<Point> Polygon;



[Quote=引用 11 楼 bjbluecoffee 的回复:]
C/C++ code

class Polygon
{
public:
//缺省构造函数
Polygon();

//拷贝构造函数
Polygon(const Polygon& rPoly);

virtual ~Polygon();

//计算面积
virtual int iCalArea(void);

//计算周长
virtual int iCalGrith(void);

private:

//存储定点
vector<int> m_vNode;
};


[/Quote]
thunderhun 2008-09-23
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 bjbluecoffee 的回复:]
C/C++ code
class Polygon
{
public:
//缺省构造函数
Polygon();

//拷贝构造函数
Polygon(const Polygon& rPoly);

virtual ~Polygon();

//计算面积
virtual int iCalArea(void);

//计算周长
virtual int iCalGrith(void);

private:

//存储定点
vector<int> m_vNode;
};
[/Quote]

学习ing~
jia_xiaoxin 2008-09-23
  • 打赏
  • 举报
回复
将11楼的补充一下
typedef struct _Point{
int x;
int y;
}Point, *lpPoint;

class Polygon
{
public:
//缺省构造函数
Polygon();

//重载构造函数
Polygon(int n):nCount(n);

//拷贝构造函数
Polygon(const Polygon& rPoly);

//赋值操作符重载
Polygon& Polygon::operator = (const Polygon& RightSides)

virtual ~Polygon();

//计算面积
virtual int iCalArea(void);

//计算周长
virtual int iCalGrith(void);

//取得顶点数
int GetPointNum();

//取得顶点
vector<Point> & GetPoint();
private:
//顶点数
int nCount;
//存储定点
vector<Point> m_vNode;
};
fallening 2008-09-23
  • 打赏
  • 举报
回复
template<typename T>
struct Point
{
T x_;
T y_;
};

template< typename T >
struct Line
{
Point<T> start_;
Point<T> end_;
};

template< typename T >
struct Polygon
{
vector<Line<T> > edge_;
};
wudeshou82666 2008-09-23
  • 打赏
  • 举报
回复
首先是分凹多边形和凸多边形,还有怎么检测用顶点来构造的多边形是不是合理的..........
wangdeqie 2008-09-23
  • 打赏
  • 举报
回复

//考察点会不会是类的继承,多态,比如:
class CPolygon
{
protected:
int width, height;
public:
void set_values (int a, int b)
{ width=a; height=b;}
};

class CRectangle: public CPolygon
{
public:
int area (void)
{
return (width * height);
}
};

class CTriangle: public CPolygon
{
public:
int area (void)
{
return (width * height / 2);
}
};

bjbluecoffee 2007-10-17
  • 打赏
  • 举报
回复

class Polygon
{
public:
//缺省构造函数
Polygon();

//拷贝构造函数
Polygon(const Polygon& rPoly);

virtual ~Polygon();

//计算面积
virtual int iCalArea(void);

//计算周长
virtual int iCalGrith(void);

private:

//存储定点
vector<int> m_vNode;
};
加载更多回复(10)

65,187

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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