→ tinlans:q3 另一個用意是把較可靠的放前,較不可靠的放後。11/13 04:34
→ tinlans:不然自己寫錯的時候可能錯誤訊息會出現在 std header 上,11/13 04:35
→ tinlans:因為你自己寫的 header 漏了什麼,造成往下炸過去。11/13 04:35
→ tinlans:弄不清楚狀況的人,可能以為是 std header 有 bug...11/13 04:36
不是很懂為什麼錯誤的訊息會出現在別的header裡??
有人可以用sample code舉例一下,在什麼情況下,A.h的錯誤訊息會出現在B.h裡嗎??
<New Question 1>
Forward Declarations
Cons:
* It can be difficult to determine whether a forward declaration or a full
#include is needed for a given piece of code, particularly when implicit
conversion operations are involved. In extreme cases, replacing an #include
with a forward declaration can silently change the meaning of code.
若牽涉到隱式轉換的話,為什麼會難以決定到底要用#include或forward declaration呢?
而且用forward declaration來代替#include,為什麼會改變code的意思呢??
<New Question 2>
Copy Constructors
Decision:
Few classes need to be copyable. Most should have neither a copy constructor
nor an assignment operator....
這裡提到只有少數的class有copy的需求,
這就是為什麼c#和java會把class設為reference type,
而不是像C\C++一樣把class設為value type的原因嗎???
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.153.199
推 LPH66:最前的問題 例如用到 template 的程式碼 12/04 23:17
推 AstralBrain:或是class結尾漏了分號 XD 12/05 01:46
→ AstralBrain:Q1: Forward decl.定出來的class是個incomplete type. 12/05 02:44
→ AstralBrain:而incomplete type因為看不到class body, 會造成 12/05 02:45
→ AstralBrain:template取代失敗, 啟動SFINAE機制 12/05 02:46