我有一个函数,它接收一个char *
参数:
Foo::Foo (char * arg0) {
....
}
在原始示例中,使用
char[]
来传递此值...char bar[] = "Bar";
Instance.foo (bar);
...这很好用。
但是,我发现我可以传递一个字符串字面量,强制转换为char *
,而编译器不会发出任何警告。
Instance.Foo ((char *) "Bar");
然而,根据我的阅读,似乎应该避免这种情况——指向的内存值可能会发生变化。
上述陈述是否正确(“应该避免”),或者在这种情况下是否适当?
编辑 - 进一步的研究发现这篇文章 很好地回答了我的问题...
const_cast
是一个选项。否则,我建议将其复制到新缓冲区中。 - chrisstd::string
呢?这样就不会有这些问题了。 - Xymostechchar const *
。 - Kerrek SBstd::string
没有任何关于char *
的内容,而std::vector
可以,但不包括字符串函数。 - chris