使用参数实例化模板 class 的 class 成员的正确方法
Correct way to instantiate a class member of template class with paramter
我有一个带有实例化参数的模板 class。
我有另一个 class 有一个 class.
的成员参数
下面没有编译,因为它说实例化方法被删除了...
class MyClass {
public:
MyTClass<AClass> tclass;
}
下面的方法可行,但我不确定这是否是正确的方法...
class MyClass {
public:
MyTClass<AClass> tclass = MyTClass<AClass>(1234);
}
成员参数似乎已实例化,但它是否在所有者 class 销毁时整理?
如果可以保持代码整洁,我希望避免使用 new 和 delete,所以我想我希望在 class 实例化时优先使用成员参数实例化。由于我添加了显式实例化,我是否需要回退到 new 和 delete 以确保它被销毁?
不,您不需要在这里做任何额外的事情。 MyClass
的析构函数调用所有成员的析构函数,无论它们最初是如何构造的。
(即使成员是指针也是如此。但是指针的析构函数什么都不做,这就是为什么你需要 delete
调用来析构和释放 它指向的东西.)
我有一个带有实例化参数的模板 class。 我有另一个 class 有一个 class.
的成员参数下面没有编译,因为它说实例化方法被删除了...
class MyClass {
public:
MyTClass<AClass> tclass;
}
下面的方法可行,但我不确定这是否是正确的方法...
class MyClass {
public:
MyTClass<AClass> tclass = MyTClass<AClass>(1234);
}
成员参数似乎已实例化,但它是否在所有者 class 销毁时整理?
如果可以保持代码整洁,我希望避免使用 new 和 delete,所以我想我希望在 class 实例化时优先使用成员参数实例化。由于我添加了显式实例化,我是否需要回退到 new 和 delete 以确保它被销毁?
不,您不需要在这里做任何额外的事情。 MyClass
的析构函数调用所有成员的析构函数,无论它们最初是如何构造的。
(即使成员是指针也是如此。但是指针的析构函数什么都不做,这就是为什么你需要 delete
调用来析构和释放 它指向的东西.)