2012-02-02 3 views
-1
class grandfather 
{ 
    protected: 
    int test; 
}; 

class father : grandfather 
{ 
    protected: 
    int foo; 
}; 

class child : father 
{ 
    public: 
    void stuff(); 
}; 

void child::stuff() 
{ 
    test = 5; 
    while(test == 5) 
    { 
    foo++; 
    } 
} 

int main(void) 
{ 
    child childObj; 

    childObj.stuff(); 

    return 0; 
} 

これがプログラムを設計する安全な方法であるかどうか不思議です。私の友人は、父または祖父の父親、または祖父の父親が何らかの形で溢れ出ることを述べました。これはプログラムを設計する安全な方法ですか?

誰でも2セントを出したいですか?

whileループは含まれていません!

+1

何ですか?あなたが投稿したコードは、 'foo ++'のUBを除いて全く問題ありません。 (無限ループもありますが、すでに知っていたと思います) –

+0

レモンズ:これはあまり問題ではありません。コードは完全に役に立たないものを実行し、(未定義の動作とは別に)あまり実際には間違っていません。しかし、あなたはデザインが大丈夫かどうか尋ねます。デザインは目的に関連していなければならず、目的はありません。さらに悪いことに、あなたは派生物であり、名前はすべての子供が必然的に父親であることを意味し、それは彼らが孫になることを必要とします。実際の意味では、それはナンセンスであり、意味のあるデザインを示唆していません。 –

+0

*「父や祖父の父祖、祖父の父」を初期化する*これはどこで行うのですか? –

答えて

3

これは何も問題はありません(つまり、whileループを除く)。

親クラスを持つクラスがあります。そのクラス自体に親クラスがあります。問題ない。

1

投稿したコードは完璧であり、あなたの友人は間違っています。
の要件を意味が分かれば、意味が分からない限り、良いデザインのコメントはコメントできません。

0

それは私にとって相続の完全に良い使用のように思えます。あなたの友人がなぜそれに反対するのか分かりません。

関連する問題