作者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