2
我今天看到下面的代碼:將迭代器中的轉換運算符轉換爲指針是個好主意嗎?
options.push_back(&*i);
凡i
是一個迭代器和容器options
商店指針的*i
類型。得到的&*i
是醜了一點,我開始懷疑:
這是個好主意,添加一個轉換操作符轉換到
*i
指針?
你覺得呢?
我今天看到下面的代碼:將迭代器中的轉換運算符轉換爲指針是個好主意嗎?
options.push_back(&*i);
凡i
是一個迭代器和容器options
商店指針的*i
類型。得到的&*i
是醜了一點,我開始懷疑:
這是個好主意,添加一個轉換操作符轉換到
*i
指針?
你覺得呢?
這並不難看,但也許是危險的:如果迭代器的來源i
是動態分配的並在容器options
之前被刪除,則會導致容器中存在無效指針。
如果不是,這是完全有效的代碼。爲了使其更具可讀性,你可以加括號:
options.push_back(&(*i));
,如果你不使用這個結構在你的代碼,我就不會在這裏使用一個轉換操作符。
我會避免它;隱式轉換通常是重載解析頭痛的原因,再加上,當目標是一個指針時,他們默默地啓用了可能對你的對象無意義的東西(比如'if(i)')。 '&*'畢竟不是那麼糟糕...... – 2013-05-02 02:26:26
@ matteo-italia: 我想了很多關於這個的事情......我同意你的看法。這是一個壞主意。 – vinipsmaker 2013-05-05 17:27:40