C++编程二十问

设计“C++编程二十问”目的在于检验对C++编程规范的熟悉度,这些问题在C++11规范之内,不涉及软件设计算法和思想方面,但偏向科学计算应用。 在不查阅资料的情况下,回答正确不低于18个问题的为优秀水平,回答正确10个以下的为不合格。 答题可发到QQ群:1055763748,会有回复评分及讨论。

二十道问题

  1. C++11规范中,int、long和long long三种整型数的内存表示占据的最小比特位分别是多少?
  2. C++11规范中,float、double和long double三种浮点数表示的最小有效位分别是多少?
  3. *ptr++等价于*(ptr++)吗?
  4. 为何++a性能优于a++?
  5. class和struct关键字定义类的区别是什么?
  6. int a={0};int a{0}; 两种定义有何区别?
  7. C++使用static_cast/const_cast/reinterpret_cast代替C旧时转换操作有什么好处?
  8. 使用make_type<> 代替显式使用new和delete type有什么好处?
  9. const int *v; int const * v; int * const v; 这三种const修饰有何区别?
  10. C++中对于cctype和ctype.h头文件中定义的同一类型,使用上有何不同?
  11. 为什么C++引入了shared_ptr还需要引入weak_ptr?
  12. GCC中constexpr函数定义在某个函数中是否有问题?
  13. 内置变量nullptr的类型是什么?
  14. std::vector的size()是返回size_t类型吗?
  15. std::vector和std::string的预分配机制中,capacity()返回可保存的元素个数是否包含已存在的元素个数[即size()]?
  16. std::string s1("value");std::string s1="value";是调用同一个构造函数吗?
  17. std::string s2(s1);string s2=s1;是调用同一个构造函数吗?
  18. std::pair<>std::tuple<>的区别,后者变量中能够定义最多几个元素?
  19. std::pair<int,float> a(12,11.7);std::make_pair(12,11.7);生成的对象类型有何不同?
  20. cpp -v /dev/null -o /dev/null输出什么内容,有何作用?

徐顺,初版写于2020年8月26日,北京中关村,最后修改于 2024年9月7日, Shun Xu