学C++之初就看到有种说法是尽可能使用C++相比C的现金功能的内容,例如string而不是char*,各种容器而不是数组,似乎是操作更复杂。但是最近在看时间戳的转换问题的时候看到很多人的写法一是用了time.h而不是ctime相似这样的问题。刚开始学者算是,不清楚为什么还要这样用,格式化输出的时候还用到了printf这样的格式化输出函数,莫非C++本身不带有这种功能的方法么,还要回到C的内容上去,这些东西能否足够“先进”,是不是跟得上时代。
解决方案:20分
假如只看 ISO C++ (核心语言&标准库),不考虑第三方库,C++本身还真缺乏 string formatting 的工具。
C++标准库的 iostream 实际上是跟不上时代的。 iostream 是上世纪八十年代设计的,至今没有大改动,即使当时领先世界十年,现在也已经落后二十年了。就算能认为它是“C++风格”的库,也只能说这个风格是“过时的C++风格”,从“现代的C++风格”来看,它的设计未必恰当
当然,不是说 printf 就能跟得上时代,光“没有类型检查,假如传入类型不正确的参数就是未定义行为”这一项,就可以断言它不够先进,何况还要加上“不能用于自定义类型”,这使得它的局限性比 iostream 大太多了
C++标准库的 iostream 实际上是跟不上时代的。 iostream 是上世纪八十年代设计的,至今没有大改动,即使当时领先世界十年,现在也已经落后二十年了。就算能认为它是“C++风格”的库,也只能说这个风格是“过时的C++风格”,从“现代的C++风格”来看,它的设计未必恰当
当然,不是说 printf 就能跟得上时代,光“没有类型检查,假如传入类型不正确的参数就是未定义行为”这一项,就可以断言它不够先进,何况还要加上“不能用于自定义类型”,这使得它的局限性比 iostream 大太多了
解决方案:10分
需要敢于尝试
解决方案:10分
没那么简单。假如不出现free()或delete就意味着不去手动管理内存。那就必然要去了解RAII原则,RAII的核心就是封装资源,那也就势必要理解封装的概念,注意,封装可是面向对象的基础特性之一。而在现实中,能把封装理解透彻并实际运用,那代码质量就已经很有保障了。