→ bibo9901: 要用 proxy class11/29 15:55
→ bibo9901: 然後自訂 proxy::operator= 和 proxy::operator double 11/29 15:56
推 LPH66: 你這種寫法是依據物件本身的常數性來決定呼叫誰11/29 17:40
→ LPH66: 因此只要你的 point 不是 const 就一定會呼叫前者11/29 17:41
→ noodleT: @一樓,這樣每次呼叫[ ]都會建構/解構proxy,應該會拖累11/30 22:16
→ noodleT: 不少速度吧11/30 22:16
→ bibo9901: proxy class 只需維護一個 pointer 或 reference12/01 12:07
→ bibo9901: 我想應該不會有多大負擔吧?12/01 12:08
class point{
proxy & oprator[] (int n){
return proxy(data[n],changed)
}
}
class proxy class{
private:
bool *changed;
double *data;
public:
proxy(double &d,bool &b){
data = &d;
changed = &b;
}
proxy &oprator = (double d){
*changed = true;
*data = double;
return this;
}
double operator (double){
return *data;
}
}
除
operator =, operator double
之外,
還必須自己重寫
operator +-×÷
+=,-=,…
等運算吧?
(抱歉,我還沒試這邊)
這些介面操作方法,
會讓class變的需更多時間
在建構/解構上嗎
※ 編輯: noodleT (110.26.71.227), 12/01/2015 21:57:45
※ 編輯: noodleT (110.26.71.227), 12/01/2015 22:02:04
推 LPH66: 有 operator double 編譯器就會自動幫你接了 12/01 22:33
→ LPH66: 我是指 + - * / 這些; 帶等於的確實還是要自己寫 12/01 22:34
→ noodleT: 謝謝,我會試試 12/01 22:38