是否可以从两个不同的抽象类继承仅返回类型不同的同名运算符。
如果是这样,他们:
实现运算符的语法是什么
使用/解析运算符的语法是什么
与任何其他虚函数相同,一般情况下的开销是多少?
如果您可以向我提供参考或示例代码,将会有所帮助
thanks
12struct abstract_matrix {
13 virtual double& operator()(int i, int j);
14};
15
16 struct abstract_block_matrix {
17 virtual double* operator()(int i, int j);
18 };
19
20struct block_matrix : abstract_matrix, abstract_block_matrix {
21
22};
块矩阵需要为两个运算符提供实现,以便它是矩阵或块矩阵,具体取决于上下文。我不知道如何提供特定于 block_matrix 类的实现。
现在,它是通过传递对象包装类型作为最后一个参数来完成的,但这看起来不太干净。我想保留纯矩阵表示法。
函数的返回类型不是其签名的一部分,因此 block_matrix 中不能有两个运算符+(i,j) - 这将是一个不明确的调用。因此,多重继承在这一点上有点转移注意力。你就是不能那样做。
你真正想做什么,为什么?
无论如何,对于您的另一个问题:虚拟运算符在性能和操作方式方面与虚拟函数完全相同。使用它们的方式只是存在轻微的语义差异 - 但在幕后它们只是像其他函数一样的函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)