Gobelijn API documentation  - generated for commit a0cbea7
 All Classes Namespaces Files Functions Variables Typedefs Friends Macros Pages
app_poly2.cpp
Go to the documentation of this file.
1 
9 #include "demos.h"
10 #include "objtracer/demobj.h"
11 #include "tracer/tracer.h"
12 
13 using namespace std;
14 using namespace ODemo;
15 
16 namespace {
17 
18 void display(Vehicle* p)
19 {
21  p->info();
22 }
23 
24 void displayBis(Vehicle& b)
25 {
27  b.info();
28 }
29 
30 } // namespace
31 
37 int app_poly2()
38 {
40 
41  // Setting the log output ON/OFF
43 
44  COMP_MISC_LOG_TRACER(">>>> statement: RoadVehicle rv1;");
45  RoadVehicle rv1;
46 
47  COMP_MISC_LOG_TRACER(">>>> statement: Bicycle m1(\"Honda\", \"black\");");
48  Bicycle m1("Honda", "black");
49 
50  COMP_MISC_LOG_TRACER(">>>> statement: PassengerRoadVehicle prv1(5);");
51  PassengerRoadVehicle prv1(5);
52 
53  COMP_MISC_LOG_TRACER(">>>> statement: SailBoat b1(\"Freddy\");");
54  SailBoat b1("Freddy");
55 
56  // Setting the log output ON/OFF
58 
59  COMP_MISC_LOG_TRACER(">>>> statement: displayBis(rv1);");
60  displayBis(rv1);
61 
62  COMP_MISC_LOG_TRACER(">>>> statement: displayBis(m1);");
63  displayBis(m1);
64 
65  COMP_MISC_LOG_TRACER(">>>> statement: displayBis(prv1);");
66  displayBis(prv1);
67 
68  COMP_MISC_LOG_TRACER(">>>> statement: displayBis(b1);");
69  displayBis(b1);
70 
71  COMP_MISC_LOG_TRACER(">>>> statement: auto rv2Ptr = new RoadVehicle();");
72  auto rv2Ptr = new RoadVehicle();
73 
74  COMP_MISC_LOG_TRACER(" statement: Bicycle* m1Ptr = &m1;");
75  Bicycle* m1Ptr = &m1;
76 
77  COMP_MISC_LOG_TRACER(" statement: auto prv2Ptr = new PassengerRoadVehicle(10);");
78  auto prv2Ptr = new PassengerRoadVehicle(10);
79 
80  COMP_MISC_LOG_TRACER(">>>> statement: SailBoat* b1Ptr = &b1;");
81  auto b1Ptr = &b1;
82 
83  COMP_MISC_LOG_TRACER(">>>> statement: display(rv2Ptr);");
84  display(rv2Ptr);
85 
86  COMP_MISC_LOG_TRACER(">>>> statement: display(m1Ptr);");
87  display(m1Ptr);
88 
89  COMP_MISC_LOG_TRACER(">>>> statement: displayBis(m1);");
90  displayBis(m1);
91 
92  COMP_MISC_LOG_TRACER(">>>> statement: display(prv2Ptr);");
93  display(prv2Ptr);
94 
95  COMP_MISC_LOG_TRACER(">>>> statement: display(b1Ptr);");
96  display(b1Ptr);
97 
98  // delete b1Ptr;
99  // Runtime error because of assignment b1Ptr = &b1;
100  // So b1Ptr points to local variable that should not be deleted
101  // Should have been:
102  // delete b1Ptr; b1Ptr = &b1s;
103  // in the code a couple of lines earlier.
104 
105  // Notice the dynamically allocated object do NOT get destructed: memory
106  // leakage.
107 
108  COMP_MISC_LOG_TRACER(">>>> statement: return 0;");
109  return 0;
110 }
Comprehensive include file for all tracer classes.
Header for object tracer demo routines.
A RoadVehicle is any kind of vehicle that moves on the road.
Definition: RoadVehicle.h:16
int app_poly2()
Demonstrates late binding.
Definition: app_poly2.cpp:37
#define COMP_MISC_FUNCTION_TRACER
Macro for tracking function scope.
This Vehicle interface class.
Definition: Vehicle.h:16
virtual void info() const =0
Return vehicle information.
#define COMP_MISC_TRACER_OUTPUT_OFF
Macro for turning tracker output off.
Definition: TracerOutput.h:14
A PassengerRoadVehicle transports one or more passengers.
#define COMP_MISC_LOG_TRACER(MSG)
Macro for inserting log message into tracker output at current severity level.
Definition: TracerOutput.h:17
#define COMP_MISC_TRACER_OUTPUT_ON
Macro for turning tracker output on.
Definition: TracerOutput.h:11
Comprehensive include file for all of objtracer.
Represents a simple Bicycle.
Definition: Bicycle.h:16
A simple SailBoat class.
Definition: SailBoat.h:15