C++是一种强类型语言,变量的类型需要明确指出,C++11的auto关键字则提供了一种在编译期根据右值自动推测类型的能力。auto的使用很方便,主要优点是:
- 不需要推测复杂的表达式类型
- 某些情况必须用,例如模板类中无法推测结果的类型,只能用auto
template <typename T,typename U>
void mul(const T& t,const U& u)
{
auto tmp = t*u; // 直接用auto
typedef decltype(t*u) M; // 将这种类型保留下来,后面还可以用
}
但是,使用auto也可能导致一些问题:
- 代码可读性降低。
- 代码跨平台性降低,别的编译器不一定支持。
- 可能存在二义性,例如
auto s = "abc";
,s是一个const char*,而非string等。
网友评论