[英]In C++, how is cin and cout objects in relation to its class iostream?
我正在為 android 應用程序學習 Udacity 初學者課程,它說該類是具有字段(變量)和方法的東西,可用於實例化對象。 基本上,類是對象的藍圖,對象是類的實例。
例如,如果我在 xml 文件中創建一個 'TextView' 對象,我可以用它來分配文本、textSize、textColor 等,這個對象是 'TextView' 類的一個實例,它已經在 Java 中定義了它可以實例化的字段和方法。 因此,對於 TextView 對象,我只是在它的字段和方法之后創建了一個 'TextView' 類的實例。
現在我的困惑來了。
在 C++ 中,“cin”和“cout”被稱為“iostream”類的對象。 但是,當我什至沒有在我的源代碼中實例化它們時,cin 和 cout 怎么可能已經被認為是類的對象呢?
例如,在 Java 中,一旦我在我的 xml 源代碼中創建了 TextView,它將成為“TextView”類的對象。 但是,在我使用“iostream”類的字段和方法實例化它之前,cin 和 cout 怎么可能充當“iostream”類的對象? 如果 cin 和 cout 是 'iostream' 類的對象,是否意味着它是 'iostream' 類的實例化?
另外,我在谷歌上查到的很多定義聽起來像“iostream”是包含cin和cout對象的東西,但對象不是類的實例,而不是屬於層次意義上的類的對象嗎? 當然,對象是基於類創建的,但對象不是屬於類的東西,好像對象是生活在稱為類的更大容器中的較小容器。 那么如果cin和cout是iostream的對象,他們不應該擁有iostream定義的所有字段和方法嗎?
我很難在這里連接點。
在 C++ 中,'cin' 和 'cout' 被稱為
iostream
類的對象。
那是不正確的。
以下是標准對它們類型的說明:
namespace std {
extern istream cin;
extern ostream cout;
extern ostream cerr;
extern ostream clog;
...
}
但是,當我什至沒有在我的源代碼中實例化它們時,cin 和 cout 怎么可能已經被認為是類的對象呢?
它們在標准頭文件iostream
中聲明。 它們是在標准庫的實現中定義的。 您不需要在源代碼中定義它們。
那么如果cin和cout是iostream的對象,他們不應該擁有iostream定義的所有字段和方法嗎?
std::cin
是std::istream
類型的對象,而std::cout
是std::ostream
類型的對象。
您可以在std::cin
上調用std::istream
任何public
成員函數。
您可以在std::cout
上調用std::ostream
任何public
成員函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.