作者yehes2001 ()
看板EE_DSnP
標題[問題] hw1.2 selectionSort(array, Less());
時間Sun Mar 15 21:47:25 2009
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
1F:推 ric2k1:對的! 上次上課最後我有講到三個東西同學們很容易搞混: 03/15 21:55
2F:→ ric2k1:(1) A a(10); // 這是宣告一個 class A 的物件, 然後在宣告 03/15 21:56
3F:→ ric2k1: // 時呼叫 A 的 constructor (傳入參數 10) 03/15 21:57
4F:→ ric2k1:(2) return A(10); // 這是 explicitly 去呼叫 A 的 03/15 21:57
5F:→ ric2k1: // constructor (傳入參數 10), 而將產生的 03/15 21:58
6F:→ ric2k1: // 臨時物件 return 回去 03/15 21:59
7F:→ ric2k1:(3) a(10); // 如果 a 是一個物件的話, 這一定是因為 class 03/15 22:00
8F:→ ric2k1: // A overload 了 operator (), 然後要求傳入 03/15 22:00
9F:→ ric2k1: // 一個 int 當參數. 在這裡可以將 a 當作是 03/15 22:01
10F:→ ric2k1: // 一個 functional object. 03/15 22:02
11F:→ yehes2001:哇哇 謝謝老師,您人真好~ 03/15 22:04