为何string没有设定const char*转换,而是使用c_str(),设计者脑袋进水了么

为什么string没有设定const char*转换,而是使用c_str(),设计者脑袋进水了么?
RTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
------解决方案--------------------
隐式类型转换并不是很好用
或者说,写代码很好写,但代码不是写完就完事的,往往后续的维护扩展比最初的编写要重要得多
在易理解性和可维护性这两方面,隐式类型转换很不好,可能造成程序员自己都没想到的连续隐式转换路径,从而导致冲突或者产生程序员自己没想到的副作用
------解决方案--------------------
《More Effective C++》
5、对定制的“类型转换函数”保持警觉
定义类似功能的函数,而抛弃隐式类型转换,使得类型转换必须显示调用。例如 string类没有定义对char*的隐式转换,而是用c_str函数来实施这个转换。拥有单个参数(或除第一个参数外都有默认值的多参数)构造函数的类,很容易被隐式类型转换,最好加上 explicit 防止隐式类型转换。
------解决方案--------------------
原文懒的去翻了,上面是网上找的读书笔记
隐式类型转换的问题就在于,它增加了一条从某个类型到另一个类型的路径,而当程序复杂起来的时候,很可能就导致两个你压根不想有关系的类型互相转换……
如果string可以隐式转换成char*,而另一个类有一个单参数为char*的构造函数,那么string就可以隐式转换成这个类,如果这种转换蔓延开来,运气好的话不出问题,运气差一点编译器会报告“有两种可以从类A转换成类B的路径”,运气太差就直接在某个类的构造函数中执行某个程序员压根想不到的副作用……

所以,除非你很确定这个隐式类型转换的适用范围很窄,不会造成任何你想不到的副作用,否则放弃隐式类型转换
写代码少写几个字母,远远比不上程序的可靠性和可维护性
------解决方案--------------------
当然,如果楼主真的觉得少写几个字母如此重要,什么程序的可维护性可扩展性都去死,那也无妨
反正大型项目会告诉楼主谁是正确的,楼主爱觉得谁脑子进水都无所谓,时间证明一切