C++11 引入了類型別名(type aliases),它允許我們使用新的名稱來表示已存在的類型
以下是一些使用類型別名的示例:
using
關鍵字創建類型別名:#include <iostream>
#include <vector>
using VecInt = std::vector<int>;
int main() {
VecInt vec = {1, 2, 3, 4, 5};
for (int num : vec) {
std::cout << num << " ";
}
return 0;
}
在這個例子中,我們創建了一個名為 VecInt
的類型別名,它表示 std::vector<int>
類型。這使得代碼更具可讀性,尤其是在處理復雜類型時。
typedef
關鍵字創建類型別名(C++98/03 語法):#include <iostream>
#include <vector>
typedef std::vector<int> VecInt;
int main() {
VecInt vec = {1, 2, 3, 4, 5};
for (int num : vec) {
std::cout << num << " ";
}
return 0;
}
在這個例子中,我們使用了 typedef
關鍵字創建了一個名為 VecInt
的類型別名,它表示 std::vector<int>
類型。雖然這種語法在 C++11 之后已被棄用,但在一些舊的代碼庫中仍然可以看到它的身影。
using
關鍵字創建模板類型別名:#include <iostream>
#include <vector>
template<typename T>
using Vec = std::vector<T, std::allocator<T>>;
int main() {
Vec<int> vec = {1, 2, 3, 4, 5};
for (int num : vec) {
std::cout << num << " ";
}
return 0;
}
在這個例子中,我們創建了一個名為 Vec
的模板類型別名,它表示 std::vector<T>
類型。這使得我們可以輕松地創建不同類型的向量,例如 Vec<int>
、Vec<float>
等。
在跨平臺開發中,類型別名的應用可以幫助我們編寫更具可讀性和可維護性的代碼。此外,由于類型別名只是在編譯時創建了一個新的名稱,因此它們不會影響程序的運行時性能。這使得類型別名成為跨平臺開發中的一個實用工具。