[英]const tuple - but able to change content (references)?
我已經定義了一個(常量)元組,如下所示:
double var1, var2;
const tuple<double&, double&> my_tup(var1, var2);
現在,為什么我可以執行以下操作:
get<0>(my_tup) = 3215.513
上面的代碼只有在元組中包含的引用是指向var1和var2的const
指針時才有意義-內存地址本身是const
(因為元組是const
,所以我們不能更改其任何內容),但是所指向的內存地址,不是所允許的更改。 但是,如果你看看這個什么引用真的是討論,你會看到有一些熱切的倡導者不是一個參考const
為變量的指針,而只是一個不同的名稱已經聲明。 在這種情況下,如何解釋引用的const
元組? 是否在上面將元組聲明為const
,如果它包含引用,那么毫無意義嗎?
(請注意,我不得不在另一種情況下使用const
元組,這太復雜了,難以解釋且與問題無關。)
如果類對象是const
,則其數據成員也將隱式const
(除非聲明為mutable
)。 因此,通常,如果元組是const
,則不能修改其任何成員。
但是,引用不能為const
(只能是引用的類型)。 實際上,引用本身無法進行任何修改(這樣做的任何嘗試都會修改所引用的對象)。 由於引用不能為const
,因此const
元組的成員仍然具有double&
類型,而不是const double&
,並且在這種情況下,您的tuple
上的const
毫無意義。 您真正想要的是tuple<const double&, const double&>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.