簡體   English   中英

const元組-但能夠更改內容(引用)?

[英]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.

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