C++ auto关键字解析

2018-09-16  本文已影响63人  狗子孙

C++是一种强类型语言,变量的类型需要明确指出,C++11的auto关键字则提供了一种在编译期根据右值自动推测类型的能力。auto的使用很方便,主要优点是:

  1. 不需要推测复杂的表达式类型
  2. 某些情况必须用,例如模板类中无法推测结果的类型,只能用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也可能导致一些问题:

  1. 代码可读性降低。
  2. 代码跨平台性降低,别的编译器不一定支持。
  3. 可能存在二义性,例如auto s = "abc";,s是一个const char*,而非string等。
上一篇下一篇

猜你喜欢

热点阅读