簡體   English   中英

有人可以解釋這行C ++代碼嗎?

[英]Can somebody interpret this C++ line of code?

抱歉,我是C ++新手。 我正在查看一些代碼,並遇到了以下代碼行:

   string cmd(*iter);

顯然,變量“ cmd”被定義為字符串,但是我不理解的部分是括號內的位:(* iter)

我知道“ * iter”是一個指針,但是在變量聲明后加上括號是什么意思?

對不起,這么愚蠢的問題。

通過*iter初始化字符串cmd。

注意: iter不一定必須是指針,它也可以是迭代器。

您應該檢查迭代器的*運算符。

在“經典” C ++語言中,您有兩種形式的初始化語法:

復制初始化

int i = 5;

和直接初始化

int i(5);

它們並不總是完全相同,但是出於基本意圖和目的,它們執行相同的操作。 (C ++ 11進一步擴展了該種類,但在此不做介紹。)在我上面的示例中,它們實際上是完全相同的:在兩種情況下,變量i都將初始化為5

所以你

string cmd(*iter);

與...具有相同的效果

string cmd = *iter;

即,它使用*iter值初始化字符串cmd ,其中iter可能是某種迭代器。

假設string實際上是標准庫中的std::string類,則您的string cmd(*iter)將調用std::string的構造函數之一。 哪一個取決於*iter的類型。

它正在調用接受此類參數的字符串類的構造函數。 同一類可以具有不同的構造函數。

它使用iter指向的值調用string的構造函數。 這行代碼僅創建了一個新的名為cmd string實例,並將其初始化為迭代器的值。

暫無
暫無

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

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