Множественное наследование абстрактных классов с чистыми виртуальными методами с тем же именем?

Если наследовать два абстрактных класса с помощью чисто виртуального метода с тем же именем, что произойдет, если я реализую этот метод? Я реализую их для обоих абстрактных классов или компилятор выбирает один для реализации?

/ConsoleCalc::DataFlow::Main

namespace ConsoleCalc {

  namespace DataFlow
  {

    class Main
    {

      public:
        Main();
        virtual ~Main()=0; // exit
        virtual int Start() =0;

    };

  };
};

//ConsoleCalc::UserInterface::Menu
#include <iostream>

namespace ConsoleCalc {

  namespace UserInterface
  {

        class Menu
        {
          private:
            std::string MenuText;
          public:
            Menu();
            virtual ~Menu()=0;
            virtual int Start() =0;
        };
  };
};

//ConsoleCalc::
#include "Main.h"
#include "Menu.h"
namespace ConsoleCalc
{
  namespace Application
  {
    class Application :
                public ConsoleCalc::DataFlow::Main,
                private ConsoleCalc::UserInterface::Menu
    {
      public:
        Application();
        virtual ~Application() =0;
        virtual int Start(); //implementation
    };
  };
};

Метод вопрос Start. Есть ли способ реализовать оба метода Start? Или одной реализации достаточно для обоих? Или компилятор каким-то образом выбирает, какой из них будет реализован, возможно, отбрасывая другой?


person Community    schedule 26.03.2015    source источник
comment
Учитывая ответы в этот другой вопрос похоже, что единственная реализация, удовлетворяющая обоим требованиям, действительна. Однако различные реализации требуют дополнительной работы.   -  person Guvante    schedule 26.03.2015
comment
возможный дубликат Наследовать интерфейсы, которые имеют общее имя метода   -  person Dale Wilson    schedule 20.04.2015