C++ 函數參數詳解:運行時類型識別在參數傳遞中的作用
在 C++ 中,函數參數傳遞可以通過值傳遞、引用傳遞或指針傳遞實現。每種傳遞方式都有各自的優缺點。
運行時類型識別 (RTTI) 是 C++ 中一種在運行時獲取對象類型的機制。它允許我們確定對象的實際類型,即使該對象被存儲在基類指針或引用中。
通過使用 RTTI,我們可以實現以下功能:
在不了解具體類型的情況下調用虛方法
確定對象的實際類型
動態轉換對象類型
在參數傳遞中使用 RTTI
在函數參數傳遞中,RTTI 可以用于實現多態性。多態性允許我們通過基類指針或引用調用派生類的方法。為了實現多態性,我們需要以下步驟:
-
在基類中聲明一個虛方法。
在派生類中重寫虛方法。
使用 RTTI 在運行時確定對象的實際類型。
根據對象類型調用相應的方法。
實戰案例
考慮以下代碼中的示例:
#include <iostream>
using namespace std;
class Base {
public:
virtual void print() {
cout << "Base class print" << endl;
}
};
class Derived : public Base {
public:
void print() {
cout << "Derived class print" << endl;
}
};
void printObject(Base* obj) {
// 使用 RTTI 確定對象的實際類型
if (dynamic_cast<Derived*>(obj)) {
// 如果對象是派生類類型,調用派生類方法
static_cast<Derived*>(obj)->print();
} else {
// 否則,調用基類方法
obj->print();
}
}
int main() {
Base* baseObj = new Base();
printObject(baseObj); // 輸出:Base class print
Derived* derivedObj = new Derived();
printObject(derivedObj); // 輸出:Derived class print
return 0;
}
登錄后復制
在本例中,printObject 函數使用 RTTI 來確定傳遞給它的對象的實際類型。如果對象是派生類類型,它調用派生類方法。否則,它調用基類方法。






