什么时候使用auto关键字

2021-02-10  本文已影响0人  陈成_Adam

auto关键字可以自动推导数据类型,主要目的是提升代码可读性和可维护性。例如:

std::vector<int>::iterator I = my_container.begin();

// transforms to:
auto I = my_container.begin();

然而,有的情形不适合使用auto关键字,例如:

int val = 42;
InfoStruct &I = SomeObject.getInfo();

// Should not become:
auto val = 42;
auto &I = SomeObject.getInfo();

上面的代码的可读性差。那什么情况下推荐使用auto关键字?

Iterators

迭代器(Iterator)通常比较长,并且使用频率高,因此使用auto比较合适。

for (std::vector<int>::iterator I = my_container.begin(),
                                E = my_container.end();
     I != E; ++I) {
}

// becomes
for (auto I = my_container.begin(), E = my_container.end(); I != E; ++I) {
}

New

使用new关键字创建对象实例时,对象名需要写两次,此时使用auto比较合适。

TypeName *my_pointer = new TypeName(my_param);

// becomes
auto *my_pointer = new TypeName(my_param);

Cast

强制类型转换时,数据类型需要写两次,此时使用auto比较合适。

TypeName *my_pointer = static_cast<TypeName>(my_param);

// becomes
auto *my_pointer = static_cast<TypeName>(my_param);
上一篇 下一篇

猜你喜欢

热点阅读