【发布时间】:2013-02-21 18:13:27
【问题描述】:
有一个关于继承和混合接口类的问题贴出:
Multiple inheritance of interfaces in C++
这让我想到了这个问题:继承顺序会影响函数解析规则吗?
给定:
struct Binary_Stream_Read_Intf
{
virtual void load_from_buffer(uint8_t*& buffer_ptr) = 0;
};
struct Binary_Stream_Write_Intf
{
virtual void store_to_buffer(uint8_t*& buffer_ptr) const = 0;
};
struct Binary_Stream_Read_Write_Intf
: public Binary_Stream_Read_Intf,
public Binary_Stream_Write_Intf
{ ; };
struct Binary_Stream_Write_Read_Intf
: public Binary_Stream_Write_Intf,
public Binary_Stream_Read_Intf
{ ; };
这是我的问题:
- 是
Binary_Stream_Read_Write_Intf和Binary_Stream_Write_Read_Intf一样吗? - 在函数调用中可以用一个代替另一个吗?
- 它们都可以用于需要
Binary_Stream_Read_Intf?
【问题讨论】:
-
你先问一个一般性的问题,然后再问 3 个特定于你的例子的问题。人们应该回答所有 4 个问题,还是只回答最后 3 个问题?
-
一般来说,如果继承的类包含相同的属性或方法(在您的示例中不是这种情况),则排序可能是一个问题。但是,当进行模棱两可的调用时,编译器会出错,因此即使在这种情况下也没关系。
标签: c++ interface multiple-inheritance name-lookup