auto
cppreference C++ keywords: auto
| 版本 | Usage | |
|---|---|---|
| until C++11 | automatic storage duration specifier | |
| since C++11 | auto placeholder type specifier |
|
| function declaration with trailing return type | ||
| since C++17 | structured binding declaration |
microsoft auto (C++)
auto 的 application
1、Return type deduction
2、auto + trailing return type
3、type inference
auto and polymorphism
由于C++ auto 是由compiler执行的,因此,它使用的是static type,因此它是无法支持多态行为的,关于这一点,是我在阅读 https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#Rc-copy-virtual 时,其中的一个这样的例子:
class B { // BAD: polymorphic base class doesn't suppress copying
public:
virtual char m() { return 'B'; }
// ... nothing about copy operations, so uses default ...
};
class D : public B {
public:
char m() override { return 'D'; }
// ...
};
void f(B& b)
{
auto b2 = b; // oops, slices the object; b2.m() will return 'B'
}
D d;
f(d);