C++ 根据类名动态创建类对象
时间: 2023-08-25 16:06:05 浏览: 125
在 C++ 中,可以使用反射机制来根据类名动态创建类对象。
具体实现如下:
1. 首先需要使用 `#include <iostream>` 和 `#include <string>` 引入头文件。
2. 定义一个基类,例如 `Base` 类。
```c++
class Base {
public:
virtual void print() {
std::cout << "I am Base." << std::endl;
}
};
```
3. 定义一个派生类,例如 `Derived` 类。
```c++
class Derived : public Base {
public:
void print() override {
std::cout << "I am Derived." << std::endl;
}
};
```
4. 定义一个函数,该函数可以根据类名动态创建类对象。
```c++
Base* createInstance(const std::string& className) {
if (className == "Base") {
return new Base();
}
else if (className == "Derived") {
return new Derived();
}
else {
return nullptr;
}
}
```
5. 在主函数中调用该函数来创建类对象。
```c++
int main() {
Base* basePtr = createInstance("Base");
basePtr->print();
Base* derivedPtr = createInstance("Derived");
derivedPtr->print();
delete basePtr;
delete derivedPtr;
return 0;
}
```
输出结果为:
```
I am Base.
I am Derived.
```
通过这种方式,我们可以根据类名动态地创建类对象,从而实现更加灵活的编程。
阅读全文