| 
Setting up your first class The division I did already in the simple examplatory class Ratio
can be followed more closely in the first "realistic" case of an
n-dimensional vector class. There, the class definition with the
methods can be found in an 
["vecNd.H"-file], the realization in the 
["vecNd.C"-file], 
and some test routines are to be found in 
["Main.C"-file].
To compile and run the code, please use the 
["Makefile"]. There are a couple of things to be noted and explained. Let us start
with the H-file:
 
 The full file is surrounded by the following lines:
 
     
     | #ifndefine vecNd_h #define  vecNd_h
 body of the file
 #endif
 |  The idea is that wherever in the code you need the class vecNd,
     wherevere you wish to instantiate such an object, you have to
     include the vecNd.H file to define this particular class and to
     make all methods etc. known to the code.
 However, C++ copes really bad with multiple definitions of
     one and the same object. You are allowed to definee the full
     class only once. This is, what the syntax above does. Wherever
     the vecNd.H file is called via
 
 it is checked wether a marker vecNd_h has been defined
     already. If this is  not  the case, it will be defined,
     and the rest of the class definition will be done.
 The class vecNd includes the  Standard library math.h
     to have access to functions like squareroot (sqrt) and the like.
     It also includes the iostream.h. The main syntax difference
     between files from the Standard library and your own class
     definitions is exemplified below:
 
     
     | #include < math.h> #include "vecNd.H"
 |  
 You see two constructors, both named vecNd, bit with different
     arguments. Constructors (as well as destructors, see below) must
     have the class name as name. However, the two construcotrs here
     are either with parameters or with another vecNd (passed by
     reference) as argument. The latter is called "copy constructor"
     for obvious reasons, check the C-file.
 There's a thing called destructor, denoted by ~vecNd().
     If you check in the C-file, you will see that this destructor
     deletes the memebers of the vector array. Note that this is
     urgently needed, whenever you allocate memory within your
     constructor, i.e. whenever you use the command "new". The reason
     is that all classes are defined to some extend within the
     framework of a method, a class, a function etc. . Whenever the
     flow of the executable program leaves this framework all
     intrinsic variables are deleted automatically. However, for
     arrays allocated via "new" this does not hold true and you have
     to delete them "by hand". Copnsequently, you have to define a
     specific "delete method" for classes that incorporate such
     arrays. This method is called destructor.
 You will see that some methods are realized within the H-file and
     with the prefix  inline . Of course, the realization is
     outside the class definition. The keyword inline has the
     effect that the corresponding executable code is included
     withinhg the larger executable instead of some look-up within the
     class definition plus additional links. This is for reasons of
     efficiency. Basically, inlines should be short, to ensure that
     the executable chunk of code related to them are shorter than the
     lookup procedure. Let me stress that inlines have to be in
     H-files. 
 
 [prev] 
   [top] 
 |