aboutsummaryrefslogtreecommitdiff
path: root/src/tests
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests')
-rw-r--r--src/tests/sptr.cpp29
1 files changed, 26 insertions, 3 deletions
diff --git a/src/tests/sptr.cpp b/src/tests/sptr.cpp
index 38d3675..bc00f78 100644
--- a/src/tests/sptr.cpp
+++ b/src/tests/sptr.cpp
@@ -9,12 +9,12 @@ public:
9 printf("Created.\n"); 9 printf("Created.\n");
10 } 10 }
11 11
12 ~Annoy() 12 virtual ~Annoy()
13 { 13 {
14 printf("Destroyed.\n"); 14 printf("Destroyed.\n");
15 } 15 }
16 16
17 void go() 17 virtual void go()
18 { 18 {
19 printf("%d: I'm annoying.\n", ++nCnt); 19 printf("%d: I'm annoying.\n", ++nCnt);
20 } 20 }
@@ -22,6 +22,22 @@ public:
22 int nCnt; 22 int nCnt;
23}; 23};
24 24
25class Annoy2: public Annoy
26{
27public:
28 Annoy2(){};
29 virtual ~Annoy2(){};
30 virtual void go()
31 {
32 printf("{{I'm Annoy2!!}} ");
33 Annoy::go();
34 }
35 virtual void go2()
36 {
37 printf("This is me, on my own...\n");
38 }
39};
40
25void beAnnoying( SPtr<Annoy> bob ) 41void beAnnoying( SPtr<Annoy> bob )
26{ 42{
27 printf("bob-Count: %d\n", bob.count() ); 43 printf("bob-Count: %d\n", bob.count() );
@@ -30,7 +46,7 @@ void beAnnoying( SPtr<Annoy> bob )
30 46
31int main() 47int main()
32{ 48{
33 SPtr<Annoy> pt( new Annoy ); 49 SPtr<Annoy> pt( new Annoy2 );
34 printf("Count: %d\n", pt.count() ); 50 printf("Count: %d\n", pt.count() );
35 pt->go(); 51 pt->go();
36 52
@@ -47,6 +63,13 @@ int main()
47 pt3->go(); 63 pt3->go();
48 64
49 beAnnoying( pt3 ); 65 beAnnoying( pt3 );
66
67 {
68 SPtr<Annoy2> pt4( dynamic_cast<SPtr<Annoy2> >(pt3) );
69 printf("Count: %d\n", pt4.count() );
70
71 pt4.go2();
72 }
50 } 73 }
51 printf("Count: %d\n", pt.count() ); 74 printf("Count: %d\n", pt.count() );
52 } 75 }