C++ Notes-Inheritance-03


タイプ変換(ベースクラス、派生クラス)
1、共通派生クラスオブジェクトはベースクラスのオブジェクトとして使用でき、逆に使用できない.
(1)派生クラスのオブジェクトをベースクラスオブジェクトに暗黙的に変換できる
(2)派生クラスのオブジェクトがベースクラスの参照を初期化できる
(3)派生クラスのポインタはベースクラスに変換されたポインタを暗黙的に含むことができる.
2、ベースクラスオブジェクト名、ポインタではベースクラスから継承したメンバーのみ使用できます
3、Code
#include <iostream>
using namespace std;
class Base1 {                //  Base1  
public:
	void display() const {
		cout << "Base1::display()" << endl;
	}
};
class Base2 : public Base1 { //     Base2  
public:
	void display() const {
		cout << "Base2::display()" << endl;
	}
};
class Derived : public Base2 { //     Derived  
public:
	void display() const {
		cout << "Derived::display()" << endl;
	}
};
void fun(Base1 *ptr) {  //            
	ptr->display();     //"    ->   "
}
int main() {            //   
	Base1 base1;        //  Base1   
	Base2 base2;        //  Base2   
	Derived derived;    //  Derived   

	fun(&base1);        // Base1       fun  
	fun(&base2);        // Base2       fun  
	fun(&derived);      // Derived       fun  

	return 0;
}