为啥C++不把string当成内置的数据类型,而是把它弄成类放到类库里面

你没发现C/C++的内置数据类型都是固定长度的么?
■网友
谢邀设计者预见到std::string不一定适合所有人,因此也不适合内置于语言之中这也继承了C的传统:君不见C为了给用户留出最大的灵活性,也(几乎)没有在标准库里定义任何复合类型(一旦定义了复合类型,就牵涉到memory layout,member order等怎么想也无法预先想出“最优方案”的问题;另一个原因是不定义复合类型有助于保证API/ABI兼容性),所以以zero-ending char sequence来代表字符串(逃避了定义复合类型的问题)
■网友
《C++语言的设计与演化》中在谈到为什么当年的C++没有在语言上支持多线程等特性时,C++之父表示他本人更喜欢调用库的方式。感觉string也类似,这样会给程序员更多自由度,无论你用Qt的QString、boost的string还是std的string,都是个人自由选择。


    推荐阅读