我希望能够编写类似a = b.c;的语句;其中b和c是std :: vector,a是它们的标量点积(双精度)。为此,我应将点积运算与“。”关联。符号。这可能吗?

最佳答案

您不能覆盖点运算符(.)。

而且,即使您可以,也永远不要为此目的。覆盖运算符时,应遵循以下三个规则:


如果运算符的含义不明确,则不应重载。
始终遵守操作员的众所周知的语义。
始终为所有相关的运算符组提供重载。


您的预期设计违反了第二条规则:您希望彻底改变点运算符的语义。

而不是这样做,您应该提供自己的函数来执行点运算。

关于c++ - 在C++中设计点积运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20861231/

10-15 00:27