Множественное наследование разрешение конфликта имён C++ = c++ multiple inheritance name clash

Множественное наследование — потенциальный источник ошибок, которые могут возникнуть из-за наличия одинаковых имен методов в предках.
В языках, которые позиционируются как наследники C++ (Java, C# и др.), от множественного наследования было решено отказаться в пользу интерфейсов.

Практически всегда можно обойтись без использования данного механизма. Однако, если такая необходимость все-таки возникла, то, для разрешения конфликтов использования наследованных методов с одинаковыми именами, возможно, например, применить операцию расширения видимости — «::» — для вызова конкретного метода конкретного родителя.
то есть если метод, например относится к одному из родителей foo то, перед его именем - доя разрешения конфликта следует указать префикс:

foo:: 

например =
пусть функциям класса library_card необходимо обращаться к элементу price базового класса {book), они должны использовать имя класса book и оператор разрешения, например book::price. Предположим, что функции show_card необходимо вывести обе цены. Тогда она должна использовать следующие операторы:

    cout << "Библиотечная цена: $" << price << endl;
    cout << "Продажная цена: $" << book::price << endl;

ссылки по теме:

  1. http://ru.wikipedia.org/wiki/%D0%9D%D0%B...
  2. http://www.intuit.ru/department/se/oopba...
  3. http://programmersclub.ru/26/