| #include <memory> |
| |
| class Shape { |
| public: |
| virtual ~Shape() = default; |
| int shape_val = 10; |
| }; |
| |
| class Drawable { |
| public: |
| virtual ~Drawable() = default; |
| virtual void draw() = 0; |
| }; |
| |
| class Circle : public Shape, public Drawable { |
| public: |
| int circle_val = 20; |
| void draw() override {} |
| }; |
| |
| struct Point { |
| int x, y; |
| }; |
| |
| int main() { |
| Point pt = { 1, 2 }; |
| Point points[] = {{1010,2020}, {3030,4040}, {5050,6060}}; |
| Point *pt_ptr = &points[1]; |
| Point &pt_ref = pt; |
| std::shared_ptr<Point> pt_sp(new Point{111,222}); |
| |
| Shape shape{}; |
| Shape &shape_ref = shape; |
| Shape *shape_ptr = &shape; |
| |
| Circle circle{}; |
| Circle &circle_ref = circle; |
| Circle *circle_ptr = &circle; |
| |
| Shape &circle_as_shape_ref = circle; |
| Shape *circle_as_shape_ptr = &circle; |
| |
| Drawable &circle_as_drawable_ref = circle; |
| Drawable *circle_as_drawable_ptr = &circle; |
| |
| return 0; // Set a breakpoint here |
| } |
| |