在本書「C++併發在行動:實際多線程」由安東尼·威廉姆斯,我發現這個代碼示例C++私人互斥訪問
template<typename T>
class threadsafe_stack
{
private:
std::stack<T> data;
mutable std::mutex m;
public:
threadsafe_stack(){}
threadsafe_stack (const threadsafe_stack& other)
{
std::lock_guard<<std::mutex> lock(other.m);
... rest of the code.
(在我的版的書,這是上市3.5)
爲什麼我可以直接訪問其他對象私有數據(在這種情況下是互斥量m)? 也許我錯過了什麼,或者這是一個錯字(我有俄羅斯版本的書,並沒有勘誤)
在此先感謝。
德米特里。
沒什麼特別的,你可以從同一個類中的其他實例訪問'private'成員。 –
什麼@πάνταῥεῖ說。實例可以在同一個_class_的其他實例中訪問私有數據。如果你想一想 - 這是複製構造函數可以工作的唯一方式(更不用說'operator ='等等)。 – davidbak