看板 C_and_CPP 關於我們 聯絡資訊
關於 template < const int > 的問題 (17969篇) free大解答了我的疑問。 但關於 CopyConstructible 且 Assignable 的 concept 我這裡有些疑問。 因為 int 是內建型別, const int 不是 assignable 也很容易理解 於是我自己寫了一個簡單的 Int 型別 =================================================== class Int { public: Int(int i = 0) :integer(i) { } Int(const Int& i) { cout << "copy costructor" << endl; integer = i.integer; } const Int& operator= (const Int& i) const { return *this;} Int& operator= (const Int& i) { this->integer = i.integer; return *this; } public: int integer; }; int main() { Int a(100); const Int b = a; vector<const Int> vec_cInt; vec_cInt.push_back(b); vec_cInt[0].integer = 99; // 我故意在讓 integer 為 public } =================================================== 我實作了 const Int& operator= (const Int& i) const; 和 Int& operator= (const Int& i); 運算子 (先不討論 const 版本的行為是否正確) 我在 main 中呼叫 const Int b = a; // CopyConstructible 而又有 const 版本的 operator= // Assignable 可是跑出的結果還是一樣 @@" 也許是我對 copy 和 assign 的 concept 看法有些出入吧 請問大家有什麼看法呢? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.43.16.28
tinlans:concept 的問題不會在編譯期和執行期檢測,你違反了前提其 12/20 19:44
tinlans:實後面的討論和實驗結果就完全沒有意義,因為本來就無法預 12/20 19:44
tinlans:期,至於什麼叫 Assignable 我建議你翻書查定義比較快。 12/20 19:45
tinlans:不是語法有效就符合 Assignable。 12/20 19:45