在该类的成员函数中实例化一个类是否安全?例如,假设我有一个带有成员函数CMyClassCMyClass::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/

10-11 18:17