1. 程式人生 > >淺談 c++中的 向上轉型

淺談 c++中的 向上轉型

向上轉型:例
#include<iostream>
using namespace std;

class Animal
{
public:
	int m_a;
};

class Dog:public Animal//公有繼承
{
public:
	int m_b;
};


int main()
{
Animal * animal=new Dog();
animal->m_a=100;
cout<<animal->m_a<<endl;

system("pause");
return 0;
}
簡單來理解就是:
#include<iostream>
using namespace std;

class Animal{
public:
	int m_a;
};

class Dog:public Animal
{
public:
	int m_b;
};

int main()
{
Dog * dog=new Dog();
dog->m_a=100;
dog->m_b=200;
Animal * animal=dog;
cout<<animal->m_a<<endl;

system("pause");
return 0;
}
結果都為100; 相當於把dog->m_b=200;這一項給忽略了;
向上轉型是編譯器自動執行的,非常安全。