C++11 引入了 auto
關鍵字,使得編譯器可以根據初始化表達式自動推導變量的類型。對于復雜類型,如模板類型、嵌套類型、帶有多個構造函數的類型等,auto
關鍵字同樣適用。
下面是一些使用 auto
處理復雜類型的例子:
template<typename T>
void foo(T t) {
// ...
}
auto x = 42; // x 的類型被推導為 int
foo(x);
struct Outer {
struct Inner {
int x;
};
};
Outer::Inner y = {42}; // y 的類型被推導為 Outer::Inner
class MyClass {
public:
MyClass(int x) : value(x) {}
MyClass(double x) : value(x) {}
int getValue() const { return value; }
private:
double value;
};
auto z1 = MyClass(42); // z1 的類型被推導為 MyClass
auto z2 = MyClass(3.14); // z2 的類型被推導為 MyClass
在這些例子中,auto
關鍵字使得編譯器可以根據初始化表達式自動推導變量的類型,而不需要顯式指定類型。這使得代碼更簡潔、易讀,并且減少了錯誤的可能性。