这是我得到的代码:
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)成员,并遭受深拷贝。