Если наследовать два абстрактных класса с помощью чисто виртуального метода с тем же именем, что произойдет, если я реализую этот метод? Я реализую их для обоих абстрактных классов или компилятор выбирает один для реализации?
/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? Или одной реализации достаточно для обоих? Или компилятор каким-то образом выбирает, какой из них будет реализован, возможно, отбрасывая другой?