// ( o12.C ) // オブジェクトを知識ベ−スに利用する−その3 // #include // ここでの Shape,Triangle オブジェクトは、ただ1つ // あればいいので、o11.C の関数を静的にしてしまった。 class Shape { static int senbun_num ; public: static int answer( int i ) { cout << "NUM : " << senbun_num << endl ; if ( i > senbun_num ) { cout << "これは形状です\n" ; return 1 ; } else { cout << "これは形状ではありません\n" ; return 0 ; } } } ; int Shape::senbun_num = 1 ; class Triangle: public Shape { static int senbun_num ; public: static int answer( int i ) { if ( Shape::answer(i) == 1 ) { // ここで知識を継承している if ( i == senbun_num ) { cout << "これは3角形です\n" ; return 1 ; } else { cout << "これは3角形ではありません\n" ; return 0 ; } } } } ; int Triangle::senbun_num = 3 ; main() { // Triangle a ; // o11.C ではオブジェクトを生成したが、 // a.answer( 3 ) ; // 今回はしない。同じ結果が得られる。 Triangle::answer(4) ; } /* [結果] これは形状です これは3角形ではありません */