diff options
Diffstat (limited to '')
-rw-r--r-- | src/tests/sptr.cpp | 29 |
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 | ||
25 | class Annoy2: public Annoy | ||
26 | { | ||
27 | public: | ||
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 | |||
25 | void beAnnoying( SPtr<Annoy> bob ) | 41 | void 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 | ||
31 | int main() | 47 | int 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 | } |