在下面的代码中,student继承了person,将子类对象赋给父类对象、发生了切片。

【C++】继承切片问题与类型转换

【C++】继承切片问题与类型转换

上面代码中的赋值不存在类型转换,这里讨论一下类型转换问题:

【C++】继承切片问题与类型转换

为什么上面赋值编译不通过?

因为存在类型转换,i需要生成临时变量,在赋值给r2引用,而临时变量存在常(const)性,需要在前面加const。

【C++】继承切片问题与类型转换

什么情况下可以发生切片?

子类对象可以赋值给父类对象/父类指针/父类的引用。

虽然父类对象不能赋给子类对象,但是子类的指针可以通过强制转换指向父类对象。

【C++】继承切片问题与类型转换

空间不重要,类型才重要

【C++】继承切片问题与类型转换

 

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-12-03
  • 2022-12-23
  • 2021-10-12
猜你喜欢
  • 2021-08-05
  • 2022-12-23
  • 2021-12-26
  • 2022-02-05
  • 2021-05-30
  • 2022-12-23
  • 2021-07-16
相关资源
相似解决方案