C++ Pointers Get Smart: Listing 1

Definition of my_class

#include <iostream>

using namespace std;

class my_class
{
private:
    // like in Java and C#, the following static member is
    // shared by all my_class instances
    static unsigned instance_counter_;
    // about this other, instead, each instance has its own
    // like in managed languages
    unsigned instance_id_;

public:
    // Constructor.
    my_class()
    {
        cout << "Instance " << (instance_id_ = ++instance_counter_) 
        << " being created." << endl;
    }

    // Destructor.
    ~my_class()
    {
        cout << "Instance " << instance_id_ << " being destroyed." << endl;
    }

    unsigned get_id() { return instance_id_; }
};

// class members are initialized outside the class declaration in C++
unsigned my_class::instance_counter_ = 0;

About the Author

Diego Dagum is a software architect and developer with more than 20 years of experience. He can be reached at [email protected]

comments powered by Disqus

Featured

  • Customize Your Own Audio Test Cues in Visual Studio 2019 v16.9 Preview 3

    Yes, developers can be alerted to a failed test with a fart sound.

  • Progress Touts New Third-Party Blazor UI Components

    Third-party dev tool specialist Progress announced an update to its .NET-centric offerings, touting new controls for Blazor, Microsoft's red-hot project for creating web apps with C#.

  • Entity Framework Core 6: What Developers Want

    Microsoft outlined its plan for Entity Framework Core 6, which in November will take its place as the data access component of the landmark .NET 6, a long-term support (LTS) release that will mark Microsoft's transition from the Windows-only .NET Framework to an open source, cross-platform umbrella offering of all things .NET.

  • AWS Open Sources .NET Porting Assistant GUI

    After previously open sourcing components of its Porting Assistant for .NET, Amazon Web Services open sourced the tool's GUI.

Upcoming Events