c ++:是不是可以在派生类中定义重载运算符,这将工作objs基类类型
Posted
技术标签:
【中文标题】c ++:是不是可以在派生类中定义重载运算符,这将工作objs基类类型【英文标题】:c++:Is it possible to define overloaded operators ind drived class that will work objs base class typec ++:是否可以在派生类中定义重载运算符,这将工作objs基类类型 【发布时间】:2012-04-26 21:11:25 【问题描述】:是否可以在驱动类中定义重载运算符来处理基类类型的 obj?
例如:假设我有一个 Point 类,我想在一个名为 Operators 的类中执行所有运算符重载,该类将继承 Point 类
有可能吗?如果没有,有没有其他方法可以做到这一点?
【问题讨论】:
如果您尝试过,您会发现这是可能的。 @LuchianGrigore 如果是的话,我会是新闻。对我来说,这似乎不是一个好的设计。 @LuchianGrigore 哎呀,我把这个问题误读为“在基类中定义重载的运算符,这将使派生类类型的 objs 工作” @SethCarnegie 呵呵,我是这么想的,你吓到我了 :) @LuchianGrigore 当我在所有人中做出一些可笑的陈述时,你可以很确定它是错误的 :) 我的大脑可能正确读取它,但发现它是错误的方式并切换它在我理解之前。 【参考方案1】:不,这是不可能的。此外,您的方法是错误的。继承是is-a
关系,Operators
显然不是Point
。你真的需要重新考虑你的设计。
【讨论】:
【参考方案2】:派生类的全部意义在于使派生类更加具体。我不确定你是否想要一个派生自 Point 的名为 Operators 的类。
您可能只想在 operator+ 的类之外定义一个定义,或者任何将 Point 对象作为参数的定义。
【讨论】:
以上是关于c ++:是不是可以在派生类中定义重载运算符,这将工作objs基类类型的主要内容,如果未能解决你的问题,请参考以下文章
C++操作符=重载继承,基类中定义了,派生类中是不是需要重新定义? [复制]