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++中,啥是运算符重载?啥是虚函数?

C++操作符=重载继承,基类中定义了,派生类中是不是需要重新定义? [复制]

为啥在C语言中,“scanf”竟然可以作为自定义函数的函数名而不报错??

5.友元运算符重载

thinkphp 中在哪自定义全局变量?

C语言中在一个函数中可以声明另一个函数吗(不是定义)?在main里面声明也可以吗?