1.今天用子类指向一个父类强制转化为子类指针的对象 发现居然输出的是子类的函数 和我想象的不一样
A*a =new A();B*b = new B(); b = (B*)a;‘
下面是我个人结合书本理解
1.子类指针转换成父类
父类指针会指向子类中原本父类的那块内存 只有一点不一样!父类的虚函数指针所指的虚函数列表会被子类覆盖(原本子类产生就会覆盖父类虚函数表的指针) 所以你打印虚函数 发现是子类的虚函数。
2.父类转换成子类
子类指针 会指向父类的内存并会多一块假的内存 内存是未知的 虚函数仍指向父类的虚函数 其他函数 其他子类成员变量一切都是未知 会发生危险行为。