summaryrefslogtreecommitdiff
path: root/src/tests/sptr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/sptr.cpp')
-rw-r--r--src/tests/sptr.cpp55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/tests/sptr.cpp b/src/tests/sptr.cpp
new file mode 100644
index 0000000..38d3675
--- /dev/null
+++ b/src/tests/sptr.cpp
@@ -0,0 +1,55 @@
1#include <stdio.h>
2#include "sptr.h"
3
4class Annoy
5{
6public:
7 Annoy() : nCnt( 0 )
8 {
9 printf("Created.\n");
10 }
11
12 ~Annoy()
13 {
14 printf("Destroyed.\n");
15 }
16
17 void go()
18 {
19 printf("%d: I'm annoying.\n", ++nCnt);
20 }
21
22 int nCnt;
23};
24
25void beAnnoying( SPtr<Annoy> bob )
26{
27 printf("bob-Count: %d\n", bob.count() );
28 bob->go();
29}
30
31int main()
32{
33 SPtr<Annoy> pt( new Annoy );
34 printf("Count: %d\n", pt.count() );
35 pt->go();
36
37 {
38 SPtr<Annoy> pt2 = pt;
39 printf("Count: %d\n", pt2.count() );
40
41 pt2->go();
42
43 {
44 SPtr<Annoy> pt3( pt2 );
45 printf("Count: %d\n", pt3.count() );
46
47 pt3->go();
48
49 beAnnoying( pt3 );
50 }
51 printf("Count: %d\n", pt.count() );
52 }
53 printf("Count: %d\n", pt.count() );
54}
55