私は次のように過度に深く継承を有するC++プログラムがあるとします深すぎる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経由で多くのホストシステムにわたって深い垂直継承階層を平坦化する方法はありますか?
独自のコールスタックメカニズムを設計する人がいますか?
分散ネットワーク/クラスタコールスタックのようなものはありますか?
+1 StackOverflowsについて質問します。 –
継承の '仮想'側面を取り除きます。クラスのsizeof()は、その下にある基底の数に関係なく変更されます(ユーザー定義のデータメンバーは無視されます)。 )。 – mcmcc
なぜそれを試してみませんか? –