InterviewGuide icon indicating copy to clipboard operation
InterviewGuide copied to clipboard

建议与勘误 C/C++ 语法部分

Open ghost opened this issue 2 years ago • 0 comments

一、8、9、10 中关于 new 和 delete 的回答建议区分 new expression 和 operator new

  1. 关于 10 中提到的重载问题 在 9 中提到 new expression 会调用 operator new 的标准库函数,但是在 10 中又说 new 是运算符不重载。 根据 cppreference 和 C++ Primer S19.1.1,operator new 是可以进行全局替换和类特定重载的,无法自定义行为的是 new expression。
  2. 关于 10 中提到的返回类型的问题 operator new 的所有版本返回值均为 void*,与 malloc 是一致的,而 new expression 则是返回具体类型的指针。

二、24 中的 const 成员变量

  1. const 成员变量是可以在类中声明时进行初始化的 在 C++98 中只有『static const 的整形』可以在类内进行初始化 C++11 的新特性是允许一个非静态数据成员在它被声明的地方被初始化 如果需要不同类拥有不同的 const 数据成员,只需要在构造函数中使用初始化列表的方式即可,如果一个成员同时被类内初始化器和构造器的初始化,则只完成构造器的初始化。C++11 Language Extensions – Classes 在类内进行初始化,能够使得所有的构造函数都为一个成员使用一个通用的初始化器。

欢迎交流和讨论

ghost avatar Jul 30 '22 03:07 ghost