C++でAnimalを作るとどうなるのかを、基本的なサンプルを使って調べてみた。
クラスの作り方
class Animal { protected: std::string voice; Animal(){ } public: void say(){ printf( "%s\n", this->voice.c_str() ); } };
クラスの継承
クラスの継承は、こんな感じになるらしい。
class Cat : public Animal { public : Cat(){ voice = "にゃ-"; } };
インスタンス化とポリモーフィズム
Animal *ani;
ani = new Cat;
ふむ。なるほど。
cpp まだよくわからないけど
基本的なことがわかれば少しはかけるようになるかもしれない。
ただ、Win32とかあのへんのCPPは型が多すぎてかんたんには手に負えない。
全てをまとめるとこんな感じ?
ちょっとしたことも書けないとダメだよね・・・・
#include <stdio.h> #include <string> class Animal { protected: std::string voice; Animal(){ } public: void say(){ printf( "%s\n", this->voice.c_str() ); } }; class Cat : public Animal { public : Cat(){ voice = "にゃ-"; } }; class Dog : public Animal { public : Dog(){ voice = "わんわん"; } }; class Lion : public Animal { public : Lion(){ voice = "がおー"; } }; int main( void ) { char str[256]; int ret ; while(1){ printf("動物(いぬ,ねこ,ライオン) or exit? "); ret = scanf("%s", str); if ( ret == EOF ){ break; } if ( strcmp( "ネコ", str ) == 0 || strcmp( "ねこ", str ) == 0 || strcmp( "neko", str ) == 0 || strcmp( "cat", str ) == 0 || strcmp( "Cat", str ) == 0 || strcmp( "CAT", str ) == 0 ) { Animal *ani; ani = new Cat; } else if ( strcmp( "いぬ", str ) == 0 || strcmp( "イヌ", str ) == 0 || strcmp( "inu", str ) == 0 || strcmp( "dog", str ) == 0 || strcmp( "Dog", str ) == 0 || strcmp( "DOG", str ) == 0 ) { Animal *ani; ani = new Dog; ani->say(); } else if ( strcmp( "らいおん", str ) == 0 || strcmp( "ライオン", str ) == 0 || strcmp( "lion", str ) == 0 || strcmp( "Lion", str ) == 0 || strcmp( "LION", str ) == 0 ) { Animal *ani; ani = new Lion; ani->say(); } } printf("\n"); return 0; }