NewObject 模板函数概念
时间: 2024-05-09 07:15:19 浏览: 84
NewObject 是一个模板函数,用于创建指定类型的新对象。它的定义如下:
```
template<typename ObjectType, typename... ConstructorArgsType>
ObjectType* NewObject(ConstructorArgsType&&... Args)
{
return new ObjectType(std::forward<ConstructorArgsType>(Args)...);
}
```
其中,ObjectType 表示要创建的对象类型,ConstructorArgsType 表示 ObjectType 构造函数的参数类型。Args 是传递给构造函数的实际参数。
使用 NewObject 可以方便地创建任意类型的对象,并且可以动态传递构造函数的参数。例如:
```
// 创建一个 int 类型的对象
int* pInt = NewObject<int>(42);
// 创建一个 std::string 类型的对象
std::string* pStr = NewObject<std::string>("Hello, world!");
// 创建一个自定义类型的对象
class MyClass
{
public:
MyClass(int a, const std::string& b) : m_a(a), m_b(b) {}
private:
int m_a;
std::string m_b;
};
MyClass* pMyClass = NewObject<MyClass>(10, "hello");
```
需要注意的是,NewObject 返回一个指向新对象的指针,需要手动释放内存。
阅读全文