“static和 friend友元 的一点调试体验” 博文中提到的测试代码
OperatorEqual.h
1 #pragma once
2
3 class OperatorEqual
4 {
5 public:
6 OperatorEqual(void);
7 ~OperatorEqual(void);
8
9 public:
10 int _index;
11
12 public:
13 OperatorEqual(int index) : _index(index) {}
14 bool operator==(OperatorEqual& rhs);
15 };
OperatorEqual.cpp
1 #include "StdAfx.h"
2 #include "OperatorEqual.h"
3
4 OperatorEqual::OperatorEqual(void)
5 {
6 _index = 0;
7 }
8
9 OperatorEqual::~OperatorEqual(void)
10 {
11 }
12
13
14 bool OperatorEqual::operator ==(OperatorEqual& rhs)
15 {
16 return _index == rhs._index;
17 }
ContainOperatorEqual.h
1 #pragma once
2 #include "OperatorEqual.h"
3 #include <iostream>
4 #include <vector>
5 using namespace std;
6 class ContainOperatorEqual
7 {
8 public:
9
10 typedef OperatorEqual iterator;
11
12 ContainOperatorEqual(void);
13 ~ContainOperatorEqual(void);
14 friend class OperatorEqual;
15
16 public:
17 OperatorEqual begin();
18 OperatorEqual end();
19 void push_back(int value) {_elems.push_back(value);}
20
21
22 private:
23 vector<int> _elems;
24 int _beg_pos;
25 int _end_pos;
26
27 };
ContainOperatorEqual.cpp
1 #include "StdAfx.h"
2 #include "ContainOperatorEqual.h"
3
4 ContainOperatorEqual::ContainOperatorEqual(void)
5 {
6 _elems.clear();
7 _beg_pos = 0;
8 _end_pos = 0;
9
10 }
11
12 ContainOperatorEqual::~ContainOperatorEqual(void)
13 {
14 }
15
16 OperatorEqual ContainOperatorEqual::begin()
17 {
18 _beg_pos = 0;
19 return OperatorEqual(_beg_pos);
20 }
21
22 OperatorEqual ContainOperatorEqual::end()
23 {
24 _end_pos = _elems.size() > 0 ? _elems.size() : 0;
25 return OperatorEqual(_end_pos);
26 }
Main_File
1 // TestOperatorEqual.cpp : 定义控制台应用程序的入口点。
2 //
3
4 #include "stdafx.h"
5 #include "OperatorEqual.h"
6 #include <iostream>
7 #include "ContainOperatorEqual.h"
8
9 using namespace std;
10
11 int _tmain(int argc, _TCHAR* argv[])
12 {
13
14 ContainOperatorEqual coe;
15 /*coe.push_back(1);
16 coe.push_back(2);
17 coe.push_back(3);*/
18
19 ContainOperatorEqual::iterator iter1 = coe.begin();
20 ContainOperatorEqual::iterator iter2 = coe.end();
21
22
23 if (iter1 == iter2)
24 {
25 cout << "yes" << endl;
26 }
27 else
28 {
29 cout << "no" << endl;
30 }
31
32
33 OperatorEqual oe1;
34 OperatorEqual oe2;
35
36 if (oe1 == oe2)
37 {
38 cout << "yes=====" << endl;
39 }
40
41 return 0;
42 }
“static和 friend友元 的一点调试体验”文章地址:
http://www.cnblogs.com/ziyoudefeng/archive/2012/03/18/2405082.html