定义一个基类和派生类,并分别声明它们的对象,然后输 出对象的类型。声明一个基类指针,编程验证RTTI的功能:如果基类指针指向派生类对象,输出TRUE;否则,输出NULL。
时间: 2024-12-23 09:27:37 浏览: 13
在面向对象编程中,我们可以创建一个基类(BaseClass)和一个派生类(DerivedClass),派生类从基类继承属性和方法。例如:
```cpp
// 基类 BaseClass
class BaseClass {
public:
virtual void display() { cout << "This is BaseClass" << endl; }
};
// 派生类 DerivedClass,继承自 BaseClass
class DerivedClass : public BaseClass {
public:
void display() override { cout << "This is DerivedClass" << endl; }
};
int main() {
// 声明并初始化基类和派生类的对象
BaseClass baseObj;
DerivedClass derivedObj;
// 输出对象类型
cout << "Type of baseObj: " << typeid(baseObj).name() << endl;
cout << "Type of derivedObj: " << typeid(derivedObj).name() << endl;
// 声明基类指针并指向派生类对象
BaseClass* basePtr = &derivedObj;
// 验证 RTTI (运行时类型信息) 功能
if动态_cast<DerivedClass*>(basePtr) != nullptr)
cout << "Is DerivedClass: TRUE\n";
else
cout << "Is DerivedClass: NULL\n";
return 0;
}
```
在这个例子中,`typeid()` 函数用于获取类型的名称,而 `dynamic_cast` 则用于在运行时检查类型转换的有效性。如果 `basePtr` 指向的是 `DerivedClass` 对象,`dynamic_cast` 将返回非空指针,表示是 `DerivedClass` 类型,否则返回 `nullptr`。
阅读全文