2011-03-12 12 views
1

C++的新手,但我是一名Java程序員。試圖現在學習C++。通過Stanley Lipmann閱讀C++ Primer。Stanley Lipmann的「C++ Primer」庫類型

我不明白第3章關於庫類型的這句話。他在談論庫類型的字符串和向量:

這些庫的種類較多,基本類型的抽象 - 數組和指針 - 這是語言的一部分

難道他的意思是:

這些庫類型是抽象類型,而不是原始的類型,如數組和指針是哪個語言的一部分

我的解釋是否正確?

+1

哈哈哈給我聽起來像他混淆了讀者過於複雜的語法。 在主題上,我想說一個向量是一種類型的數組抽象,一個字符串本質上是一樣的東西,作爲一個字符數組... – ultifinitus 2011-03-12 15:37:34

+2

這兩個語句是等價的,是的。 – 2011-03-12 15:37:46

+4

如果你是一個新手,那麼你不需要了解你讀的書的每一個和每一個字。你只要繼續閱讀,然後繼續進行你目前所瞭解的任何事情。一旦你理解了這門語言的基礎,那麼你可以再次開始閱讀,以瞭解你以前不瞭解的內容。 – Nawaz 2011-03-12 15:43:45

回答

0

你選擇了一個很好的書,但我能看到這句話可能會迷惑你。

我想這:

「這些庫的種類較多,基本類型的抽象 - 數組和指針 - 這是語言的一部分」

應該說更多的東西是這樣的:

」這些庫類型是擴展的更原始類型 - 數組和指針 - 是語言的一部分「

+1

考慮到OP的Java背景,據說「一切都是對象」以及與Java中的'extends'關鍵字相關的繼承的內涵,我會懷疑這會讓OP更加混淆。 – 2011-03-12 15:58:16

+0

謝謝史蒂夫。我認爲你的措辭比作者更有意義。 – yapkm01 2011-03-12 16:28:00

1

讓我舉個例子。 int p[5];是一個數組聲明,而std::vector<int> v;是一個vector庫類型聲明。它們都可以作爲p[index](或分別爲v[index])訪問,但它們的行爲不同:讀取數組值只是在某個位置訪問內存,讀取vector平均值範圍檢查等,可以調整其大小,但數組可以' t等

2

這可能比技術更文化。

作者似乎將基本數據類型的指針和數組看作是因爲它們非常接近機器體系結構(數組是連續的內存塊,指針是內存地址)。當然,他所調用的庫類型全部使用內存,並且都在內存空間中有一個地址,但也構建了很多複雜的邏輯和行爲,而這些並不是系統架構中固有的。這就是爲什麼他稱之爲抽象類型。

對於C++的老生,你總是從下往上學。那就是從更原始的數據類型(以及它們如何映射到機器)開始,然後慢慢移動到更抽象的類(如字符串,列表等)。

對於新的Java學生來說,一切都是一個對象 - 所有先進的內存管理,錯誤檢查以及人們可能希望的複雜功能。 「原始」的一組數據類型的概念是從Java中提取出來的,所以「抽象」的區別是沒有意義的。

祝你的C++的努力:)

+0

謝謝。希望好旅程。 – yapkm01 2011-03-12 16:26:13