gpt4 book ai didi

C++ 多重继承关闭同名运算符

转载 作者:太空狗 更新时间:2023-10-29 22:53:33 26 4
gpt4 key购买 nike

是否可以从两个不同的抽象类继承同名运算符,只是返回类型不同。如果是这样,他们:

  • 实现运算符的语法是什么

  • 使用/解析运算符的语法是什么

  • 一般情况下的开销是多少,与任何其他虚函数一样?

如果您能向我提供有用的引用或示例代码

谢谢

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) - 这将是一个模棱两可的调用。因此,在这一点上,多重继承有点像转移注意力。你不能那样做。

您真正想做什么,为什么?

无论如何,对于您的另一个问题:虚拟运算符在性能和运行方式方面与虚拟函数完全一样。它们的使用方式在语义上略有不同 - 但在本质上它们的功能与其他任何功能一样。

关于C++ 多重继承关闭同名运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1989969/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com