指针兼容性

指指向基类和派生类的指针之间的兼容性。

指向基类的指针或引用可以引用派生类对象,而不必进行显示类型

1
2
3
BrassPlus dilly("Annie Dill", 493222, 2000);
Brass * pb = &dilly; // ok
Brass & rb = &dilly; // ok

将派生类引用或指针转换为基类引用或指针被称为向上强制类型转换,不需要进行显示转换;

1
2
3
4
5
Brass b("Billy Bee", 123432, 10000.0);
BrassPlus bp("Betty Beep", 232313, 12345.0);
Brass * pb = &b;
BrassPlus * pbp = &bp;
pb = pbp; // ok, 不需要显示转换

将基类引用或指针转换为派生类引用或指针被称为向下强制类型转换,需要显示转换,否则编译不通过

1
2
3
4
5
6
Brass b("Billy Bee", 123432, 10000.0);
BrassPlus bp("Betty Beep", 232313, 12345.0);
Brass * pb = &b;
BrassPlus * pbp = &bp;
pbp = pb; // 编译不通过, 需要显示转换
pbp = static_cast<BrassPlus*>(pb); // ok
------ 本文结束------
赞赏此文?求鼓励,求支持!
0%