回答
這是通過指針訪問對象的成員函數或者成員變量,而不是一個常規的變量或參考。
例如:使用常規變量或引用,可以使用.
運算符來訪問成員函數或成員變量。
std::string s = "abc";
std::cout << s.length() << std::endl;
但是,如果你有一個指針工作,你需要使用->
操作:
std::string* s = new std::string("abc");
std::cout << s->length() << std::endl;
它也可以被重載爲某對象類型執行特定功能。像shared_ptr
和unique_ptr
這樣的智能指針,以及STL容器迭代器,都會使該運算符重載模擬本地指針語義。
例如:
std::map<int, int>::iterator it = mymap.begin(), end = mymap.end();
for (; it != end; ++it)
std::cout << it->first << std::endl;
a->b
表示(*a).b
。
如果a
是指針,a->b
是構件b
其中a
點。
a
也可以是一個像指針一樣的指針(如vector<bool>
的存根)覆蓋運算符。
(如果你不知道指針是什麼,你還有另外一個問題)
除非它是運算符重載的類。 – 2010-11-06 14:14:36
有這麼多投票,這是一個恥辱,因爲超載運營商是常見的,也是答案的重要部分。 – 2010-11-06 14:21:35
我不知道(* a).b是什麼意思。 – 2010-11-06 14:23:02
成員對象說明B指向一個 A-> B
的->
運算符,它是專門應用於指針,需要以獲得規定的字段或由指針引用的對象的方法。 (這也適用於structs
僅限於他們的領域)
如果你有一個變量ptr
聲明爲指針,你可以把它想象成(*ptr).field
。
我添加的一個邊節點只是爲了讓迂腐的人開心:幾乎每個操作者都可以通過重載它來爲你的類定義不同的操作符語義。
它不是專門用於指針,因爲它可以作爲類運算符重載。共享指針組件的功能與標準庫中的容器迭代器一樣。 – 2010-11-06 14:02:36
是的,當然它可以被重載(作爲每個操作符),但我猜想OP需要知道操作符的原始語義。 – Jack 2010-11-06 14:06:37
X-> Y可以意味着兩兩件事。如果x是一個指針,那麼它表示由x指向的對象的成員y。 如果x是一個運算符 - >()被重載的對象,那麼它意味着x.operator - >()。適用於(a)所有的指針類型
否。如果x是一個帶有operator-> overloaded的對象,則表示x.operator- >(),如果返回值也支持operator->,則表示x.operator - >()。operator - >()。運算符 - >不帶任何參數。 – Puppy 2010-11-06 14:04:59
我的不好,現在編輯 – 2010-11-06 14:09:26
- 訪問運算符,(b)中的所有類型的顯式地重載此運算
導引返回類型的本地lambda表達式:
std::vector<MyType> seq; // fill with instances... std::sort(seq.begin(), seq.end(), [] (const MyType& a, const MyType& b) -> bool { return a.Content < b.Content; });
引入一個函數的尾部返回類型與重新發明的組合
auto
:struct MyType { // declares a member function returning std::string auto foo(int) -> std::string; };
+1爲返回類型。 – Puppy 2010-11-06 14:03:30
不要忘記#2適用於所有推導的返回類型(lambdas和非lambda)。 – 2010-11-06 14:22:28
添加到abve枚舉。不知道爲什麼代碼示例沒有正確顯示,如果有人知道發生了什麼,請隨時更正格式。 – 2010-11-07 11:26:54
- 1. > +和> - 是什麼意思在C#
- 2. >> =是什麼意思?
- 3. Groovy,什麼意思 - >意思是
- 4. 什麼?在C#中是什麼意思?
- 5. 什麼()=>在C#中的意思?
- 6. 「ptr = ptr - > next」這是什麼「 - >」是什麼意思? (C++)
- 7. C中##是什麼意思?
- 8. `^^^`和`〜>`是什麼意思?
- 9. 「 - >」是什麼意思?
- 10. <>是什麼意思?
- 11. <>是什麼意思?
- 12. 「=>」是什麼意思?
- 13. '=>'是什麼意思?
- 14. `()=> Unit`是什麼意思?
- 15. > var是什麼意思?
- 16. 「 - >」是什麼意思?
- 17. 「=>」是什麼意思?
- 18. <+>是什麼意思?
- 19. 「outer =>」是什麼意思?
- 20. {< >}是什麼意思?
- 21. $ this->是什麼意思?
- 22. >> = purescript中的意思是什麼?
- 23. 什麼是()=> {}是什麼意思?
- 24. =>在php中是什麼意思?
- 25. 在java中=() - >是什麼意思?
- 26. 在c/C++中,^ =是什麼意思?
- 27. 這是什麼「>> =」運算符在C中的意思?
- 28. 什麼意思 - >在Ruby中的意思是
- 29. 是什麼意思:是什麼意思?
- 30. 什麼`... |類型聲明中的b - > c是什麼意思?
你熟悉哪種語言? – Vlad 2010-11-06 13:58:37
不確定你確切的意思是關於「 - >」。它只是一個訪問成員變量和函數的參考資料。希望這可以幫助。 – 2010-11-06 13:59:02