You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

面向对象编程中,接口如何解决圆-椭圆问题?

接口无法解决面向对象中的圆-椭圆问题?

有人认为接口能解决面向对象编程中的若干问题,尤其是圆-椭圆问题。比如可以定义如下接口:

class IEllipse {
public:
  virtual double GetXRadius() const = 0;
  virtual double GetYRadius() const = 0;
  virtual void SetXRadius(double r) = 0;
  virtual void SetYRadius(double r) = 0;
}; 

但仍存在类似如下的问题函数:它适用于IEllipse的部分实现,但不适用于圆的实现(圆的实现会把SetXRadius和SetYRadius都关联到同一个存储变量radius):

std::string SerializeDestructively(IEllipse& ellipse) {
  std::stringstream s;
  s << ellipse.GetXRadius() << " ";
  ellipse.SetXRadius(0.0);
  s << ellipse.GetYRadius();
  ellipse.SetYRadius(0.0);
  return s.str();
}

问题的根源在于,IEllipse代表的是可在各维度调整大小的椭圆,而圆根本无法实现这个接口——因为圆被修改后就不再是圆了,仅通过定义椭圆接口并不能解决该问题。

内容的提问来源于stack exchange,提问作者V. Semeria

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 23:04:57