Week 2

Notes 2 - C++ OOP review

Classes

class ClassName {
  private:
    int memberVar;
  public:
    ClassName();         // default constr.
    ClassName(int);      // constr. w/ arg
    ~ClassName();        // destructor
   
    int getMemberVar();   // accessor func.
    bool setMemberVar(const int);  // mutator func.
    void inputData();// driver func.
    void displayData() const;// driver func.
};
...
ClassName obj1;
ClassName obj2(987);
ClassName* obj3 = new ClassName();
delete obj3;

Dynamic Member Variables

class ClassName {
  private:
    dataType*  dynMemberVar;
    unsigned int capacity; // capacity for dynMemberVar
    unsigned int count;    // current count of elements within dynMemberVar
  ...
};
  • Default Constructor()
  • Copy (Constructor)
  • ~Destructor()
  • Memberwise Assignment =
  • Overloading the assignment operator
  • Overloading comparison and arithmetic operators
  • *this
  • Segmentation Fault: Undefined Behaviour
  • Memory Leak: unfreed memory, loss of reference
  • Dangling Pointer: accessing memory that has already been freed

GDB