What .NET Developers Must Know about C++ Classes: Listing 4

MyClass declaration vs. definition.

MyClass.h:
// declaration of MyClass
class MyClass {
public:
  MyClass(const int);

  int GetField() const;
  void SetField(const int);

private:
  int myField_;
};

MyClass.cpp:
// this #include tells the compiler what class the functions defined
// below belong to
#include "MyClass.h"

MyClass::MyClass(const int fieldInitValue) : myField_{fieldInitValue} {}

int MyClass::GetField() const { return myField_; }

void MyClass::SetField(const int value) { myField_ = value; }

main.cpp:
#include <iostream>
// this include tells the compiler the contract of invoked MyClass functions
#include "MyClass.h"

using namespace std;

int main(int argc, char* argv[]) {
  MyClass my1 { 5 }, my2 { my1 };
  // my1 and my2 are (don't refer to) different instances
  my2.SetField(3);

  // my1 prints "5"; my2 does "3"
  cout << "my1.MyField = " << my1.GetField() << ", my2.MyField = " << my2.GetField() << endl;
}

About the Author

Diego Dagum is a software architect and developer with more than 20 years of experience. He can be reached at email@diegodagum.com.