Object-Oriented Programming in C++: Constructors

Contents:

1. Constructors. 2. Default Constructors. 3. Constructors with Arguments. 4. Time Class with Constructors.

Constructors:

Constructor is a member function in the class, which has the following characteristics: 1. It has the same name as the class. 2. It doesn't return any type. 3. It is called every time an instance of a class is created. 3. It initialize the class members with initial values. We can have more than one constructor in a class, for example:
  1. class point {
  2. double x,y; // private data members
  3. public: // public methods
  4. point (int x0,int y0); // a constructor
  5. point () { x = 0; y = 0;}; // a constructor
  6. point (double alpha; doubler); // a constructor
  7. void move (int dx,int dy);
  8. void rotate (double alpha);
  9. int distance (point p);
  10. }
And In the main function we can call them as follow:
  1. int main()
  2. {
  3. point p1 (10,10), p2, p3 (pi /4, 2.5);
  4. }

Default Constructors:

Default Constructor is a constructor that can be called without having to provide any arguments. Like all member function, the implementation of the default constructor begins with '{' ends with '}', and its body is located between those brackets, for example:
  1. class point {
  2. double x,y;
  3. public:
  4. point () { x = 0; y = 0;}; // default constructor
  5. }

Constructors with Arguments:

May the programmer wants to create objects from a class with initial values, then he can define constructors with arguments. For example:
  1. class point {
  2. double x,y;
  3. public:
  4. point (int x0,int y0); // a constructor
  5. point (double alpha; double r); // a constructor
  6. }
And we can call the constructors in the above example as follow:
  1. point p1 (10, 20); // call constructor with given arguments
  2. p3 (pi / 4, 2.5); // call constructor with given arguments

Time Class with Constructors:

In the following example we re-implement Time class with constructors and default arguments:
  1. // Declaration of the Time class.
  2. class Time {
  3. public:
  4. Time( int h = 0, int m = 0,int s = 0 ) // default constructor
  5. {
  6. hour = h;
  7. minute = m;
  8. second = s;
  9. }
  10. void setTime( int h, int m, int s) // set hour, minute, second
  11. {
  12. hour = ( h >= 0 && h < 24 ) ? h : 0;
  13. minute = ( m >= 0 && m < 60 ) ? m : 0;
  14. second = ( s >= 0 && s < 60 ) ? s : 0;
  15. }
  16. void print24() // print time in 24 format
  17. {
  18. cout << ( hour < 10 ? "0" : "" ) << hour << ":"
  19. << ( minute < 10 ? "0" : "" ) << minute;
  20. }
  21. void print12() // print time in 12 format
  22. {
  23. cout << ( ( hour == 0 || hour ==12 ) ? 12 : hour % 12 )
  24. << ":" << ( minute < 10 ? "0" : "" ) << minute
  25. << ":" << ( second < 10 ? "0" : "" ) << second
  26. << ( hour < 12 ? " AM" : " PM" );
  27. }
  28. private:
  29. int hour; // 0 - 23
  30. int minute; // 0 - 59
  31. int second; // 0 - 59
  32. };
  33.  
  34. int main()
  35. {
  36. Time t1, // all arguments defaulted
  37. t2(2), // minute and second defaulted
  38. t3(21, 34), // second defaulted
  39. t4(12, 25, 42), // all values specified
  40. t5(27, 74, 99); // all bad values specified
  41.  
  42. cout << "Constructed with:\n"
  43. << "all arguments defaulted:\n ";
  44. t1.print24();
  45. cout << "\n ";
  46. t1.print12();
  47.  
  48. cout << "\nhourspecified; minute and second defaulted:"
  49. << "\n ";
  50. t2.print24();
  51. cout << "\n ";
  52. t2.print12();
  53.  
  54. cout << "\nhourand minute specified; second defaulted:"
  55. << "\n ";
  56. t3.print24();
  57. cout << "\n ";
  58. t3.print24();
  59.  
  60. cout << "\nhour, minute, and second specified:"
  61. << "\n ";
  62. t4.print24();
  63. cout << "\n ";
  64. t4.print12();
  65.  
  66. cout << "\nall invalid values specified:"
  67. << "\n ";
  68. t5.print24();
  69. cout << "\n ";
  70. t5.print12();
  71. cout <<endl;
  72.  
  73. return 0;
  74. }
Note: You can find the full source code of this example in code.zip file.

Tags

Add new comment