İşte bir parça C ++ kodu.
Bu örnekte, birçok kod bloğu yapıcı çağrılarına benzemektedir. Ne yazık ki, # 3 blok kodu değil ( https://godbolt.org/z/q3rsxn ve https://cppinsights.io kullanarak kontrol edebilirsiniz ).
Bence, eski bir C ++ gösterimi ve {} (cf # 4) kullanarak yeni C ++ 11 inşaat gösteriminin tanıtımını açıklayabilir.
T(i)
Bir yapıcı gösterimine çok yakın, ama kesinlikle çok farklı bir anlam açıklamanız var mı?
struct T {
T() { }
T(int i) { }
};
int main() {
int i = 42;
{ // #1
T t(i); // new T named t using int ctor
}
{ // #2
T t = T(i); // new T named t using int ctor
}
{ // #3
T(i); // new T named i using default ctor
}
{ // #4
T{i}; // new T using int ctor (unnamed result)
}
{ // #5
T(2); // new T using int ctor (unnamed result)
}
}
Not: bu nedenle T(i)
(# 3) T i = T()
;
-Wall
ve almak " warning: parentheses were disambiguated as redundant parentheses around declaration of variable named 'i' [-Wvexing-parse]
" clang gelen, ya da biraz daha az motive " warning: unnecessary parentheses in declaration of 'i' [-Wparentheses]
" gcc dan .
T t()
) hakkında farkındaydım ama çok basit beyan ifadeleri için değil. Elbette, bu can sıkıcı olabilir .