簡體   English   中英

Xcode C ++開發,需要澄清

[英]Xcode C++ development, clarification needed

我絕對喜歡Xcode提供深入了解該語言可能的成員函數的方式,如果不是我今天發現的奇怪之處,我希望將其相對於例如文本伴侶使用。

string s = "Test string"; 唯一可用的substr簽名如下所示

在此處輸入圖片說明

但是據我了解,以及我在網上看到的簽名應該是

string substr ( size_t pos = 0, size_t n = npos ) const;

確實s.substr(1,2) ; 在Xcode中既可以理解又可以使用。

為什么在我嘗試完成方法時不顯示? (Ctrl-空格鍵)

Xcode正確執行了完成,但這不是您期望的。 您實際上是在不知不覺中自己回答了這個問題。 正如您所說, stringsubstr()方法的函數簽名是:

string substr ( size_t pos = 0, size_t n = npos ) const;

substr()所有參數均具有默認分配,因此,對Xcode而言, s.substr() (無參數)是要插入的有效代碼完成,因為它實際上是 s.substr(0, s.npos) 您可以使用任意數量的帶有默認參數的標准C ++函數進行確認。 最簡單的地方是使用任何STL容器構造函數。

以一個vector為例。 我們都知道vectors可以采用Allocator ,但是分配給Allocator的默認參數對於大多數臨時使用來說“足夠好”。 當然, vector構造函數的兩個簽名是:

explicit vector ( const Allocator& = Allocator() );
explicit vector ( size_type n, const T& value= T(), const Allocator& = Allocator() );

在這兩種情況下, Allocator參數都有一個默認分配,在第二種情況下, T默認值有一個默認分配。 現在,看一下Xcode在構造vector時的建議:

向量構造函數的Xcode 4.2.1代碼完成

沒有參數列表的建議實際上是僅使用Allocator的構造函數。 僅采用size_type的建議實際上是采用size_typeTAllocator的構造函數。

根據您對此的看法,它可能是也可能不是Xcode錯誤。 理想情況下,您希望看到具有諸如substr()類的簡單函數的默認參數的substr() ,但是對於STL容器構造函數,您可能幾乎永遠都不想看到它們。 也許這是一個選擇,但我不希望看到此問題得到糾正。 不過,我很樂意與您一起使用雷達。

暫無
暫無

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

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