【发布时间】:2021-11-01 17:55:48
【问题描述】:
char* name;
const char* _name = "something";
name = _name; // conversion from const char * is not allowed
我知道它在 c++ 中已被弃用,但我想知道为什么...
为什么 C++ 禁止 name 指向一些文字 _name 指向?
【问题讨论】:
-
afaik
name = _name从来都没有问题,但char * _name = "something";已被弃用,因为它在 constness 上撒谎 -
它们是不同的类型。如果你有
char*,你可以修改它所指向的内容。如果name = _name;被允许,name[0] = 'A';也将被允许,这将修改const数组。 -
C最初允许
char * _name = "something";,因为const还没有被发明出来 -
@Caleth 是的,如果我没记错的话,它仍然允许这样做。
-
请解释为什么您认为允许它对任何人都有好处。