为什么 C++ 中,基类指针可以指向派生类对象

2025-04-11 20:03:24
推荐回答(2个)
回答1:

因为继承描述了 “ 是一种 ” 关系, 所以如果B类继承A类,那么B类对象就是A类对象,所以A类指针或者引用就可以指向派生类的对象。比如 Triangle类(三角形类)继承Shape类(形状类),那么定义一个Triangle对象,这对象既是Triangle(三角形)也是Shade(形状)。这种“是一种”关系在面向对象语言中都是适用,不只是C++。

如果基类指针指向派生类对象,那么该指针和派生类对象的指针相等吗?
不一定相等,派生类指针转换为基类指针时可能需要进行一定的转换(自动进行),所以不一定相等。

回答2:

因为基类与派生类的关系 是IS A 的关系,也就是说派生类是一个基类,基类的指针可以访问到派生类中基类所拥有的属性,而只在派生类中存在的属性,基类指针就访问不到。