簡體   English   中英

shared_ptr中的const:我需要兩個還是僅一個

[英]const in shared_ptr: do I need two or only one

我遇到了這段代碼:

const std::shared_ptr<const T>& a_shared_pointer,

我真的很好奇這兩個const是什么意思? 它們是同一意思嗎? a_shared_pointer是一個共享指針,指向我們無法修改的內容?

就解除引用和保持一致性而言,共享指針類似於原始指針。

例:

請注意,在下面,術語[const]表示我們可以選擇是否插入const:

[const] X * [const] p;

給我們4個關於constness的選擇:

X* p; -p是一個可變指針(可以更改為指向另一個X)

const X *p -p是指向不可變X的可變指針

X * const p; -p是指向可變X的不變指針(只能指向此X)

const X * const p; -p是指向不變X的不變指針(只能指向此X)

與shared_ptr類似:

std::shared_ptr<T> &p引用指向可變T的可變指針

const std::shared_ptr<T> &p指向可變T的不可變指針的引用

std::shared_ptr<const T> &p指向不可變T的可變指針的引用

const std::shared_ptr<const T> &p指向不可變T的不可變指針的引用

a_shared指針是對const std::shared_ptr的引用(例如,您不能通過該引用對指針進行非const操作,例如reset等),指向const T意味着指向的對象也是const(再次,您不能執行a_shared_ptr->non_const_method() )。

暫無
暫無

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

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