有沒有人見過在c/C++中顯式使用的存儲類auto?如果是這樣,在什麼情況下?auto c/C++
6
A
回答
23
auto在當前的C/C++中永遠不會有用,因爲所有變量都是隱式自動的。它在C++ 0x中非常有用,它可以完全替換類型聲明 - 如果你有一個帶有初始賦值的變量,'auto'就會使它成爲賦值的類型,就像註釋中那樣。
1
不,假定您是否省略類說明符。我能想到的唯一合理用途是喚起對注意某個特定的局部變量的重要性,比如說一個具有相同名稱的全局變量,或者作爲一個面試問題。
很可能你會迷惑那些堅持維護代碼的可憐程序員!
4
我還沒有看到auto
用於過去10多年中編寫的代碼。沒有理由使用auto
,因爲只有您可以使用的地方無論如何都是暗含的。它仍然存在的唯一原因是爲了向後兼容,但應該在新代碼中避免它。
5
自動好用於聲明車輛:-)
1
正如亞歷已覆蓋,自動被C++ 0x中用於聲明在初始化聲明類型,其中類型是從初始化代碼推斷。
有人建議將它也用作返回類型,其中類型是從返回值的代碼中推導出來的。然而,這引起了一種模棱兩可的情況,因此在編寫本文時,正在考慮與C++ 0x的lambda語法更加一致的東西。
3
在GCC你可能需要汽車,以能夠在功能上身體的任何部位將其定義聲明嵌套函數 - 看http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Nested-Functions.html
2
這裏是從我的代碼,寫在一個例子C++ 11:
c_srgb find_in_book(const c_HVC &HVC) {
auto b = munsell.mun_to_rgb_book.find(HVC);
if(b != munsell.mun_to_rgb_book.end()) {
c_srgb f = b->second;
return f;
} else {
c_srgb ret;
ret.r=ret.g=ret.b=0;
return ret;
}
}
我更喜歡這樣的:
c_srgb find_in_book(const c_HVC &HVC) {
std::_Tree_iterator<std::_Tree_val<std::_Tmap_traits<dj::color::c_HVC,dj::color::c_srgb,std::less<dj::color::c_HVC>,std::allocator<std::pair<const dj::color::c_HVC,dj::color::c_srgb>>,false>>> b = munsell.mun_to_rgb_book.find(HVC);
if(b != munsell.mun_to_rgb_book.end()) {
c_srgb f = b->second;
return f;
} else {
c_srgb ret;
ret.r=ret.g=ret.b=0;
return ret;
}
}
相關問題
- 1. Drupal Auto以cc收入付款填充賬單信息
- 2. 什麼是「var cc = cc = cc || {};」在Cocos2D中做什麼?
- 3. 從cc設置cc自定義屬性cc
- 4. 'auto const'和'const auto'是否一樣?
- 5. (用cc場)
- 6. iPhone - CC Avenue
- 7. Dreamweaver CC和cordova.js
- 8. Debian cc flat_namespace
- 9. XML AUTO是創建嵌套元素
- 10. C++ Return Auto Array
- 11. gitosis auto merge hook
- 12. Visual Studio Auto Tidy?
- 13. Laravel auto auth?
- 14. auto m3u創建
- 15. Auto Suggest ComboBox - MVVM
- 16. Iframe Auto-Resize
- 17. CollectionView Cell Auto resizing
- 18. AWS Auto Scaling Group
- 19. Bluemix Auto Scaling API
- 20. Facebook auto-reauth
- 21. TFS auto header?
- 22. JQuery Auto Click
- 23. decltype vs auto
- 24. ngTagsInput/auto-complete(AngularJS)
- 25. auto &&做什麼?
- 26. Camera2 API HDR + Auto
- 27. Plug.dj auto-grab
- 28. C++ 11「auto」semantics
- 29. Android Auto Font Resizer
- 30. AWS EMR Auto Scaling
你能包括的C++ 0x的例子使用? – c0m4 2008-10-31 05:35:14
auto funcptr = std :: tr1 :: bind(&Foo :: Bar,this,_1,_2);這聲明「funcptr」與「bind」返回的類型相同(這是一個非常複雜的類型;在過去,你會將它包裝在std :: tr1 :: function模板中,但是使用auto不再需要這樣做了)。 – 2008-10-31 05:39:33
這是一個特殊情況,還是一般工作更多,如 auto someVar = functionThatReturnsUnknownType(); ? – c0m4 2008-10-31 05:51:32