継承とライフサイクル
戻る
::::::::::::::
Inheritance.cpp
::::::::::::::
// $Id: Inheritance.html,v 1.1 2009/06/22 16:11:46 kishi Exp kishi $
#include <iostream>
using namespace std;
class Cat {
string name;
public:
// constructor
Cat( string x ) : name( x ) {
cout << endl;
cout << "Cat's instance " << name << " is CREATED! " << endl;
}
void method() const {
cout << endl;
cout << "Cat's instance " << name << " method() invoked ... " << endl;
}
string getName() const {
return name;
}
// destructor
~Cat() {
cout << endl;
cout << "Cat's instance " << name << " is DESTROYED! " << endl;
}
};
// Derived class of Cat
class WildCat : public Cat {
public:
// constructor
WildCat( string x ) : Cat( x ) {
cout << "WildCat's instance " << getName() << " is CREATED! " << endl;
}
// destructor
~WildCat() {
cout << "WildCat's instance " << getName() << " is DESTROYED! " << endl;
}
void method() const {
cout << "WildCat's instance " << getName() << " method() invoked ... " << endl;
}
};
// Derived class of WildCat
class TamedCat : public WildCat {
public:
// constructor
TamedCat( string x ) : WildCat( x ) {
cout << "TamedCat's instance " << getName() << " is CREATED! " << endl;
}
~TamedCat() {
cout << "TamedCat's instance " << getName() << " is DESTROYED! " << endl;
}
void method() const {
cout << "TamedCat's instance " << getName() << " method() invoked ... " << endl;
}
};
int main() {
Cat one( "[ Ancestor ]" ), two( "[ Progenitor ]" );
WildCat three( "[ Frank Simatra ]" ), four( "[ Butchie Whitemore ]" );
TamedCat five( "[ Tama ]" );
one.method();
two.method();
three.method();
four.method();
five.method();
return 0;
}
■実行結果
$ ./Inheritance.exe
Cat's instance [ Ancestor ] is CREATED!
Cat's instance [ Progenitor ] is CREATED!
Cat's instance [ Frank Simatra ] is CREATED!
WildCat's instance [ Frank Simatra ] is CREATED!
Cat's instance [ Butchie Whitemore ] is CREATED!
WildCat's instance [ Butchie Whitemore ] is CREATED!
Cat's instance [ Tama ] is CREATED!
WildCat's instance [ Tama ] is CREATED!
TamedCat's instance [ Tama ] is CREATED!
Cat's instance [ Ancestor ] method() invoked ...
Cat's instance [ Progenitor ] method() invoked ...
WildCat's instance [ Frank Simatra ] method() invoked ...
WildCat's instance [ Butchie Whitemore ] method() invoked ...
TamedCat's instance [ Tama ] method() invoked ...
TamedCat's instance [ Tama ] is DESTROYED!
WildCat's instance [ Tama ] is DESTROYED!
Cat's instance [ Tama ] is DESTROYED!
WildCat's instance [ Butchie Whitemore ] is DESTROYED!
Cat's instance [ Butchie Whitemore ] is DESTROYED!
WildCat's instance [ Frank Simatra ] is DESTROYED!
Cat's instance [ Frank Simatra ] is DESTROYED!
Cat's instance [ Progenitor ] is DESTROYED!
Cat's instance [ Ancestor ] is DESTROYED!
$ ./Inheritance.exe | grep Tama
Cat's instance [ Tama ] is CREATED!
WildCat's instance [ Tama ] is CREATED!
TamedCat's instance [ Tama ] is CREATED!
TamedCat's instance [ Tama ] method() invoked ...
TamedCat's instance [ Tama ] is DESTROYED!
WildCat's instance [ Tama ] is DESTROYED!
Cat's instance [ Tama ] is DESTROYED!
戻る