看板 EE_DSnP 關於我們 聯絡資訊
class Less: .....{ ....... }; void main(){ ..... selectionSort(array,Less()); ... } --- 我想請問說 Less() 的instantiation到底是什麼@@? 我一開始以為這樣是傳入 Less::operator() ,可是想想又不太對,覺得說不通 之後我猜測是喚起Less的 default constructor,造出一個Less的暫時性的object 然後這個object可以在 selectionSort中被用來叫 overloaded operator()。 為了證實想法 我寫了下面的code class A { public: A(){} int _data; }; int f( A a ){ return a._data;} int main() { cout<< f( A() ) <<endl; cout<< f( A() ) <<endl; cout<< f( A() ) <<endl; system("pause"); } 恩恩 結果看起來跟我猜測的吻合。 請問我這樣想對嗎@@?謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.42.171.9
ric2k1:對的! 上次上課最後我有講到三個東西同學們很容易搞混: 03/15 21:55
ric2k1:(1) A a(10); // 這是宣告一個 class A 的物件, 然後在宣告 03/15 21:56
ric2k1: // 時呼叫 A 的 constructor (傳入參數 10) 03/15 21:57
ric2k1:(2) return A(10); // 這是 explicitly 去呼叫 A 的 03/15 21:57
ric2k1: // constructor (傳入參數 10), 而將產生的 03/15 21:58
ric2k1: // 臨時物件 return 回去 03/15 21:59
ric2k1:(3) a(10); // 如果 a 是一個物件的話, 這一定是因為 class 03/15 22:00
ric2k1: // A overload 了 operator (), 然後要求傳入 03/15 22:00
ric2k1: // 一個 int 當參數. 在這裡可以將 a 當作是 03/15 22:01
ric2k1: // 一個 functional object. 03/15 22:02
yehes2001:哇哇 謝謝老師,您人真好~ 03/15 22:04
muxiv: http://yaxiv.com 07/12 00:11