簡體   English   中英

在 C++ 中,cin 和 cout 對象與其類 iostream 有何關系?

[英]In C++, how is cin and cout objects in relation to its class iostream?

我正在為 android 應用程序學習 Udacity 初學者課程,它說該類是具有字段(變量)和方法的東西,可用於實例化對象。 基本上,類是對象的藍圖,對象是類的實例。

例如,如果我在 xml 文件中創建一個 'TextView' 對象,我可以用它來分配文本、textSize、textColor 等,這個對象是 'TextView' 類的一個實例,它已經在 J​​ava 中定義了它可以實例化的字段和方法。 因此,對於 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::cinstd::istream類型的對象,而std::coutstd::ostream類型的對象。

您可以在std::cin上調用std::istream任何public成員函數。
您可以在std::cout上調用std::ostream任何public成員函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM