您好,登錄后才能下訂單哦!
C++中using關鍵字如何使用,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
C.165: 為定制點使用using關鍵字
To find function objects and functions defined in a separate namespace to "customize" a common function.
為了發現那些為了定制共通函數而定義于單獨的命名空間內的函數對象和函數。
Example(示例)
Consider swap. It is a general (standard-library) function with a definition that will work for just about any type. However, it is desirable to define specific swap()s for specific types. For example, the general swap() will copy the elements of two vectors being swapped, whereas a good specific implementation will not copy elements at all.
考慮交換函數。它是一個一般的(標準庫)可以適用于任何類型的函數。然而,也希望可以為特殊類型定義特殊的交換函數。例如,通常的交換函數會復制作為交換對象的vector的元素,然而好的特殊實現應該根本不復制元素。
namespace N {
My_type X { /* ... */ };
void swap(X&, X&); // optimized swap for N::X
// ...
}
void f1(N::X& a, N::X& b)
{
std::swap(a, b); // probably not what we wanted: calls std::swap()
}
The std::swap() in f1() does exactly what we asked it to do: it calls the swap() in namespace std. Unfortunately, that's probably not what we wanted. How do we get N::X considered?
函數f1中的std::swap()會準確執行我們所要求的:它調用std命名空間中的swap()。不幸的是那可能不是我們想要的。怎樣才能執行我們期待的N:X?
void f2(N::X& a, N::X& b)
{
swap(a, b); // calls N::swap
}
But that may not be what we wanted for generic code. There, we typically want the specific function if it exists and the general function if not. This is done by including the general function in the lookup for the function:
但是這樣(上面的代碼那樣,譯者注)做不是一般代碼中應該有的樣子。這里我么一般的想法是:如果存在特殊函數就執行它而不是一般函數。實現這種功能的方法就是將通用函數包含再函數的檢索范圍內。
void f3(N::X& a, N::X& b)
{
using std::swap; // make std::swap available
swap(a, b); // calls N::swap if it exists, otherwise std::swap
}
關于C++中using關鍵字如何使用問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。