#include<iostream>
using namespace std;
class A
{
private:
int m_a;
public:
void print()
{
cout<<"AA"<<endl;
}
};
class B:public A
{
private:
int m_b;
void print()
{
cout<<"BB"<<endl;
}
};
int main()
{
A a;
B b;
a=b;
//b=a; 向下赋值需要重载'='
A *pa=new A;
A *pb=new B;
pa->print();
pb->print();
}
向上转型
子类对父类进行赋值可行,父类对子类赋值需要手动干预(如‘=’重载)。这是因为父类的成员相较于子类要少,所以子类可将自身所有成员对父类进行操作;反之,父类成员不够对子类成员操作,如 int 型转向 float 型。
指针引用
父类指针可指向子类,也是子类对父类赋值的道理。