爲什麼這項工作做得很好:ostream的deferencing運營商<<
cout << "foo";
雖然這不?
(&cout)->operator<<("foo");
所以我想這件事情來覆蓋相關的IT工作正常數值。 (我正在使用MS Visual C++編譯器。)
爲什麼這項工作做得很好:ostream的deferencing運營商<<
cout << "foo";
雖然這不?
(&cout)->operator<<("foo");
所以我想這件事情來覆蓋相關的IT工作正常數值。 (我正在使用MS Visual C++編譯器。)
operator<<
僅作爲有限數量類型的成員函數實現。對於其他類型的,它的實現爲一個全球性的過載,如:
std::ostream &operator<<(std::ostream &os, T const &t) {
// write the data here
}
您使用的將只與被實現爲成員函數,而不是全局重載工作的語法。
要獲得輸出爲cout << "foo";
,您必須超載運營商<<
。
cout
有一個重載的成員函數operator<<(const void *)
。這是參數"foo"
的最佳匹配。 (const char*
隱式轉換爲const void*
。)因此,將會輸出一個指針。
// These call std::ostream& operator<<(std::ostream &os, const char * val)
cout << "foo";
operator<<(cout,"foo");
// This calls cout's member function operator<<(const void * val)
(&cout)->operator<<("foo");