C vs. C++

 

Typically, C design pattern to create a re-usable module is performed like so:

typedef struct {
  int target_ms;
  int interval_ms;
} timer_t;

void timer_start(timer_t *t, uint32_t interval);

void timer_stop(timer_t *t);

bool timer_expired(timer_t *t);

On the other hand, C++ for the same module would be:

class timer
{
  public:
    void start(uint32_t interval);
    void stop();
    bool expired();
  
  private:
    int target_ms;
    int interval_ms;
};

Code analysis

void main(void)
{
  /**
   * C convention:
   *   object_method(&obj)
   * Then you pass the object as the first parameter to the methods to "operate on" this object
   */
  timer_t t;
  timer_start(&t, 1000);
  timer_stop (&t);
  
  /**
   * C++ convention:
   *  obj.method()
   *
   * C++ automatically passes the object pointer, known as the "this"  pointer to the method
   * In reality, the language and the compiler is invoking the methods just like C:
   *    timer::start(&obj, 1000);
   */
  timer t;
  t.start(1000);
  t.stop();
}
Back to top