在该类的成员函数中实例化一个类是否安全?例如,假设我有一个带有成员函数CMyClass
的CMyClass::MemberFunc
类,并且我想在CMyClass
内创建另一个CMyClass::MemberFunc
实例。
void CMyClass::MemberFunc( void )
{
CMyClass * pMyClass = new CMyClass();
}
这合法/安全吗?我知道它可以编译。我关心的是递归。第一次从主应用程序实例化
CMyClass
时会遇到递归错误吗?void main( void )
{
static CMyClass * s_pMyClass = new CMyClass(); // Will this cause recursion?
}
或者,仅当调用具有附加类实例的特定成员函数时,才会发生递归吗?
void CMyClass::MemberFunc( void )
{
CMyClass * pMyClass = new CMyClass();
pMyClass->MemberFunc(); // Pretty sure this will cause a recursive loop.
}
换句话说,只要我不调用该类的第二个实例的成员函数,就可以安全地实例化该类的成员函数中的给定类吗?谢谢。
最佳答案
这并不比实例化任何其他对象安全。请注意,在您底部的示例中,递归严格基于该方法调用自身的事实。无论如何,它都会无限期递归。
总而言之:你应该没事。
关于c++ - 成员函数内部的类实例化,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5982421/