|
|
1
8
问题是,不能仅基于返回类型进行重载。 见
最后一个stackoverflow线程指出,可以使用运算符进行重载。
但是你不能说出他们的名字,这会很快变成一个混乱的工作。 参数列表必须更改。Victor Padureau建议使用void返回类型,并将值的类型作为引用传递给要在方法中设置的值,这将起作用。还可以使用“更改不同类型的方法名”。
|
|
|
2
5
我有一个可行的解决方案。这并不完美,但如果你移植的话,这是一种解决问题的方法。
而不是打电话
|
|
3
1
最好的是: not having the same function names in both interfaces , making return values output parameters 当然是一个有趣的选择。为了完整性:假设我们不能更改基类的接口,可能是因为来自不同的库——我们仍然需要重写。 首先,继承这两个接口可能是一个有问题的设计,很可能会违反 single responsibility principle . 现在假设我们无论如何都需要。一个可能的解决方法(它不符合我自己对“优雅”的定义——但至少……)是中级课程:
现在
如果你打算进一步继承
同样的技巧允许重写使用两个基的成员,当然
最干净的
然而,要完成这一任务,需要做一些权衡,因为虚拟函数调用不是免费的(vtable lookup,然后是实际函数调用),所以如果性能更重要(如果它
真的?
是!),您可能只是在
|
|
|
4
0
如果您希望C++代码基本上类似于您的C语言示例,我建议您基本上添加一个额外的中间类。
因此,您可能会遇到如下情况:
顺便说一下,如果有冲突,只需要添加额外的类,如果有冲突,只需要进行重命名。 假设目的是模仿C代码,我可能会在每次显式实现接口方法时都这样做。 还可以根据需要调整成员的可见性。 |
|
EarthTurtle · 调整泛型抛出迭代器的异常类型 2 年前 |
|
wallop · 实现必须明确提及所有接口字段,还是可以跳过它们? 2 年前 |
|
|
Reelie · C#11-通过抽象类在接口中静态抽象成员? 2 年前 |
|
Addem · 在OCaml签名中放入类型声明的正确方法是什么 2 年前 |