我知道这可以解释为“您的喜好”问题之一,但是我真的很想知道为什么您会选择以下一种方法而不是另一种方法。

假设您有一个 super 复杂的类,例如:


class CDoSomthing {

    public:
        CDoSomthing::CDoSomthing(char *sUserName, char *sPassword)
        {
            //Do somthing...
        }

        CDoSomthing::~CDoSomthing()
        {
            //Do somthing...
        }
};

如何在全局函数中声明本地实例?

int main(void)
{
    CDoSomthing *pDoSomthing = new CDoSomthing("UserName", "Password");

    //Do somthing...

    delete pDoSomthing;
}

- 或者 -

int main(void)
{
    CDoSomthing DoSomthing("UserName", "Password");

    //Do somthing...

    return 0;
}

最佳答案

首选局部变量,除非您需要对象的生存期延长到当前块之外。 (局部变量是第二个选项)。这比担心内存管理要容易得多。

P.S.如果您需要一个指针,因为您需要将其传递给另一个函数,则只需使用address-of运算符:

SomeFunction(&DoSomthing);

关于c++ - 为什么/不应该使用 "new"运算符来实例化一个类,为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/572255/

10-10 01:44