Предположим, у меня есть программа на C ++, которая имеет чрезмерно глубокое наследование следующим образом:
using namespace std;
class AbstractParentGeneration0 {
private:
...
protected:
...
public:
virtual returnVal funcName(void) = 0;
};
class AbstractParentGeneration1: virtual public AbstractParentGeneration0 {
private:
...
protected:
...
public:
virtual returnVal funcName(void) = 0;
};
.
.
.
class AbstractParentGeneration999999999: virtual public AbstractParentGeneration999999998 {
private:
...
protected:
...
public:
virtual returnVal funcName(void) = 0;
};
class ChildGeneration: public AbstractParentGeneration999999999 {
private:
...
protected:
...
public:
returnVal funcName(void) { ... };
};
Предположим, что природа программы такова, что глубокое наследование не может быть сжато (предположим, что оно представляет эволюционную родословную рода).или глубокая иерархия таксономии)
Нет ли опасности переполнения стека при вызове высшего абстрактного класса?
Какие стратегии (кроме «байтов ulimit -s» или свертывания абстрактной иерархии)программисты C ++ используют для работы в пределах системы?
Есть ли способ сгладить глубокую вертикальную иерархию наследования во многих хост-системах с помощью RPC?
Некоторые люди разрабатывают свой собственный механизм стека вызовов?
Существует ли такая вещь, как стек вызовов распределенной сети / кластера?