Little intro to data types:

   #include <iostream>
   #include <string>
   using namespace std;
   int main()
   {
       int int_number = 2147483647; // 2^32 / 2 -1 = 2^31 -1 = 2147483648 -1 // -2^31 = -2147483648
       long long_integer = 9223372036854775807; // 2^64 / 2 - 1= 2^63 -1 = 2147483648 -1 // -2^63 = -2147483648
       float low_precision_big_float_number = 9223372036854775807; // 9.22337e+18 = 9.22337 *10^18
       double high_precision_big_float_number = 9223372036854775807; // 9.22337e+18 = 9.22337 *10^18
       
       //char are 8bit = 2^8 = 256 
       char letter_exclamation = 33; // this gets converted through ASCII table to the letter '!'
       char letter_A = 65; // this gets converted through ASCII table to the letter '!'
       
       string text = "this is a string, it's not included by default";
       
       int converted_float = 3.21;
       
       cout << "Integer:  " << int_number << endl; 
       cout << "Long Integer: " << long_integer  << endl; 
       cout << "Overflow Integer:  " << int_number + 1 << endl; 
       cout << "Overflow Long Integer: " << long_integer  +1 << endl; 
       cout << "Low precision Big float: " << low_precision_big_float_number << endl;
       cout << "High precision Big float: " << high_precision_big_float_number << endl; // command line is the bottleneck of putting out more precision
       cout << "Thats the letter '!': " << letter_exclamation << endl; 
       cout << "Thats the letter 'A': " << letter_A << endl; 
       cout << text;
       
       return 0;
   }

The code about classes and pointers:

  1. include <iostream>
   using namespace std;
   class Point2D {
       public:
           Point2D(float newX, float newY){
               _x = newX;
               _y = newY;
           };
       
           float getX() {
              return _x;  
           };
           
           float getY() {
              return _y;  
           };
           
           void print() {
               cout << "(" << getX() << ", " << getY()<< ")" << endl;
           }
           
       private:
           float _x;
           float _y;
   };


   int main()
   {
       Point2D point1(5,1);
       Point2D point2(10,100);
       Point2D point3(27,2);
       
       point1.print();
       point2.print();
       
       int integerArray[5] = { 0,1,2,3,4 };
       
       cout << "first element: " << integerArray[0] << endl;
       Point2D pointArray[3] = {point1, point2, point3 };
       pointArray[2].print();
       // pointer version of the code
       Point2D* p2d1_ptr = new Point2D(123, 234);
       Point2D* p2d2_ptr = new Point2D(123, 234);
       Point2D* p2d3_ptr = new Point2D(123, 234);
       
       (*p2d1_ptr).print();
       
       p2d1_ptr->print();
       
       Point2D* point_ptr_Array[3] = {p2d1_ptr, p2d2_ptr, p2d3_ptr };
       
       cout << "pointer address: " << point_ptr_Array[0] << "x component of the point at that address: " << point_ptr_Array[0]->getX()  << endl;
       
       return 0;
   }