C++練習代碼之1
1
#include <iostream>
2
#include <vector>
3
#include <algorithm>
4
#include <string>
5
6
using namespace std;
7
8
template<typename T>
9
class Sum{
10
private:
11
T val;
12
public:
13
Sum(T i) :val(i){
14
};
15
operator T() const{
16
return val;
17
};
18
T operator()(T i){
19
return val+=i;
20
};
21
T getVal(){
22
return val;
23
};
24
friend ostream& operator<< (ostream &out,const Sum<T> &s){
25
return out << s.val;
26
};
27
};
28
29
int main(int argc, char* argv[]){
30
vector<string> v;
31
v.push_back(string("1"));
32
v.push_back(string("2"));
33
v.push_back(string("3"));
34
cout << "the sum is " << for_each(v.begin(), v.end(), Sum<string>("")) << "\n";
35
system("PAUSE");
36
return EXIT_SUCCESS;
37
};
38

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

這里面的那個重載<<的寫法,自己也還沒搞懂原因,只是試出來的,為什么要加那個friend關鍵字才能編譯通過呢?不加編譯器報的錯又是什么意思呢?希望有誰懂的能解釋下...
posted on 2008-01-25 22:04 浩 閱讀(307) 評論(0) 編輯 收藏 所屬分類: My Program