败犬日报 2025-10-23
败犬日报 2025-10-23
1. 是否推荐用 auto 定义变量
推荐的做法是 auto 用于避免写重复类型,例如:
cpp
auto a = static_cast<T>(b);
auto c = T::create();如果一眼看不出类型不要用 auto 了。
2. 静态类型、动态类型、强类型、弱类型
几乎所有人对静态 / 动态类型的说法是:静态类型语言在编译期进行类型检查,类型检查是指标识符(通常是变量)是否和类型绑定,不可更改;动态类型语言相反。
但是有几个问题,编译期(语言的实现)和语言应该是解耦的,不能用来定义语言的属性。还有不应该只有标识符,而是所有表达式。
当然了,有人指出这个概念本身就没有严格的定义,所以这么说也无妨。
对于强 / 弱类型的说法更多更模糊了:
其实隐式转换和类型安全都是阻止不合理的类型,只不过前者的结果明确但不符合人的期望,后者会导致严重问题(严格别名问题、数组越界、野指针等)。