The class methods are implemented the same way as global functions, with the addition that the class method can access the class instance properties either directly or through the 'this' keyword in the case a local variable has the same name.
// The class declaration class MyClass { // A class method void DoSomething() { // The class properties can be accessed directly a *= 2; // The declaration of a local variable may hide class properties int b = 42; // In this case the class property have to be accessed explicitly this.b = b; } // Class properties int a; int b; }
Classes add a new type of function overload, i.e. const overload. When a class method is accessed through a read-only reference or handle, only methods that have been marked as constant can be invoked. When the reference or handle is writable, then both types can be invoked, with the preference being the non-const version in case both matches.
class CMyClass { int method() { a++; return a; } int method() const { return a; } int a; } void Function() { CMyClass o; const CMyClass @h = o; o.method(); // invokes the non-const version that increments the member a h.method(); // invokes the const version that doesn't increment the member a }