向上转型:例
#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;这一项给忽略了;
向上转型是编译器自动执行的,非常安全。