C++ - 杂项整理
字符串
- 如果需要用字符串字面值常量赋值和初始化一个
char *
,应该使用const char *
或者auto
。
char *str = "hello world"; // 将出现弃用警告
数组
- 数组的长度必须是一个常量表达式,const常量不是常量表达式。
流程控制
c++17支持将临时变量放到if语句中
std::vector<int> v;
if (const auto iter = std::find(v.begin(), v.end(), 1); iter != v.end()) {
*iter = 0;
}
if constexpr语句:允许在代码中声明常量表达式的判断条件
template<typename T>
auto print_type_info(const T& t)
{
if constexpr (std::is_integral<T>::value) {
return t + 1;
} else {
areturn t + 0.1;
}
}
在编译阶段,实际代码就会被编译为:
int print_type_info(const int& t)
{
return t + 1;
}
doulbe print_type_info(const double& t)
{
return t + 0.1;
}