在下面的代码中,student继承了person,将子类对象赋给父类对象、发生了切片。
上面代码中的赋值不存在类型转换,这里讨论一下类型转换问题:
为什么上面赋值编译不通过?
因为存在类型转换,i需要生成临时变量,在赋值给r2引用,而临时变量存在常(const)性,需要在前面加const。
什么情况下可以发生切片?
子类对象可以赋值给父类对象/父类指针/父类的引用。
虽然父类对象不能赋给子类对象,但是子类的指针可以通过强制转换指向父类对象。
空间不重要,类型才重要
在下面的代码中,student继承了person,将子类对象赋给父类对象、发生了切片。
上面代码中的赋值不存在类型转换,这里讨论一下类型转换问题:
为什么上面赋值编译不通过?
因为存在类型转换,i需要生成临时变量,在赋值给r2引用,而临时变量存在常(const)性,需要在前面加const。
什么情况下可以发生切片?
子类对象可以赋值给父类对象/父类指针/父类的引用。
虽然父类对象不能赋给子类对象,但是子类的指针可以通过强制转换指向父类对象。
空间不重要,类型才重要