Object-Oriented Programming in C++

Code display of PL4/class4.cpp

// PL4/class4.cpp
// An example using a class 
// Niels Walet, last updated 04/12/2019
#include<iostream>
#include<string>
#include<cmath>
class particle
{
private:
  std::string type {"Ghost"};
  double mass {0.0};
  double momentum {0.0};
  double energy {0.0};
public:
// Default constructor
  particle() = default ;
// Parameterized constructor
  particle(std::string particle_type, double particle_mass, double particle_momentum) :
    type{particle_type}, mass{particle_mass}, momentum{particle_momentum}, 
    energy{sqrt(mass*mass+momentum*momentum)} 
  {}
  ~particle(){std::cout<<"Destroying "<<type<<std::endl;}  // Destructor
  double gamma() {return energy/mass;}
  void print_data();
};

void particle::print_data()
{
  std::cout.precision(3); // 2 significant figures
  std::cout<<"Particle: [type,m,p,E] = ["<<type<<","<< mass
	   <<","<<momentum<<","<<energy<<"]"<<std::endl;
  return;
}

int main()
{
  // Set values for the two particles
  particle electron("electron",5.11e5,1.e6);
  particle proton("proton",0.938e9,3.e9);
  // Print out details
  electron.print_data();
  proton.print_data();
  // Calculate Lorentz factors
  std::cout.precision(2);
  std::cout<<"Particle 1 has Lorentz factor gamma="
	   <<electron.gamma()<<std::endl;
  std::cout<<"Particle 2 has Lorentz factor gamma="
	   <<proton.gamma()<<std::endl;
  return 0;
}
Download here; To copy and paste: double click inside code, then copy.