作者spider391 (小乖)
看板C_and_CPP
標題[問題] 關於 const int 的 concept
時間Sun Dec 20 16:30:25 2009
關於 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