Безопасно ли создавать экземпляр класса внутри функции-члена этого класса?Например, допустим, у меня есть класс 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.
}
Другими словами, могу ли я безопасно создать экземпляр данного класса в функции-члене этого класса, если я не вызываю эту функцию-член второго экземпляра этого класса?Спасибо.