这是我得到的代码:

struct ChoiceLine
{
    const char *prompt;
    ChoiceLine(const char *pr):
        prompt(pr)   //can this cause a memory leak?
    {
        ;
    }
};

...
ChoiceLine choiceLine("hello world");

那么可以用另一个const char*初始化const char*吗?

PS:我知道std::string,很不幸,它不符合我的目的。

最佳答案

是的,如果有点不安全,那很好:与prompt关联的内存不属于该类实例。

(在您的特殊情况下,ChoiceLine choiceLine("hello world");会很好,因为字符串文字将持续程序的生命周期)。

因此,只要类实例在作用域内,就必须将其保持在作用域内。

如果我是您,我将使用std::string作为您的类(class)成员,并遭受深拷贝。

09-27 23:18