Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Thank you! Consider this excerpt from a rather ordinary class representing a con

ID: 3826227 • Letter: T

Question

Thank you!

Consider this excerpt from a rather ordinary class representing a construction worker: class Worker public: Worker (string nm string s) ma name (nam) m skill (s) string name const f return m name; string skill const f return m skill; private string m name; string m skill; Because we did not declare a destructor, copy constructor, or assignment operator for the Worker class, the compiler writes those functions for us. A construction crew is a collection of workers. We choose to represent a crew as a dynamically allocated array of pointers to Workers. Here is an excerpt: Class Crew public Crew (int lim) m size (0), m Crew Size (lim) In Crew new Worker Elim] void hire (string nm, string s) if (m size m maxcrewsize) m crew size] new Worker (nm s) m size other functions not shown. private Worker In Crew pointer int m size; int m maxcrewSize;

Explanation / Answer

//Below are the function required

Crew::Crew(const Crew &c1)
{
   m_size = c1.m_size;
   m_maxcrewsize = c1.m_maxcrewsize;

   m_crew = new worker*[m_maxcrewsize];
   for (int i = 0; i < m_size; i++)
   {
       m_crew[i] = new worker(c1.m_crew[i]->name(), c1.m_crew[i]->skill());

   }
}
Crew& Crew::operator =(const Crew &c1)
{
   m_size = c1.m_size;
   m_maxcrewsize = c1.m_maxcrewsize;
   for (int i = 0; i < m_size; i++)
   {
       m_crew[i] = new worker(c1.m_crew[i]->name(), c1.m_crew[i]->skill());
   }
   return *this;

}
Crew::~Crew()
{
   for (int i = 0; i < m_size; i++)
       delete m_crew[i];
}

//in case you need more information regarding the program flow/working please refer below full program

#include<iostream>

#include<string>

using namespace std;

class worker
{
public:
   worker()
   {
       cout << "DEfault woker" << endl;
   }

   worker(string nm, string s) :m_name(nm), m_skill(s)
   {
       cout << "wrker const" << endl;

   }
   string name() const
   {
       return m_name;
   }
   string skill() const
   {
       return m_skill;
   }
   ~worker()
   {
       cout << "worker dest" << endl;
   }
private:
   string m_name;
   string m_skill;
};
class Crew
{
public:
   Crew(int lim) :m_size(0), m_maxcrewsize(lim)
   {
       m_crew = new worker*[lim];
   }
   void hire(string nm, string s)
   {
       if (m_size < m_maxcrewsize)
       {
           m_crew[m_size] = new worker(nm, s);
           m_size++;
       }
   }
   Crew(const Crew &c1);
   Crew & operator =(const Crew &c1);
   ~Crew();
  
private:
   worker ** m_crew;
   int m_size;
   int m_maxcrewsize;
};
Crew::Crew(const Crew &c1)
{
   m_size = c1.m_size;
   m_maxcrewsize = c1.m_maxcrewsize;

   m_crew = new worker*[m_maxcrewsize];
   for (int i = 0; i < m_size; i++)
   {
       m_crew[i] = new worker(c1.m_crew[i]->name(), c1.m_crew[i]->skill());

   }
}
Crew& Crew::operator =(const Crew &c1)
{
   m_size = c1.m_size;
   m_maxcrewsize = c1.m_maxcrewsize;
   for (int i = 0; i < m_size; i++)
   {
       m_crew[i] = new worker(c1.m_crew[i]->name(), c1.m_crew[i]->skill());
   }
   return *this;

}
Crew::~Crew()
{
   for (int i = 0; i < m_size; i++)
       delete m_crew[i];
}
int main()
{
   Crew n = Crew(10);
   n.hire("abc", "c++");
   n.hire("def", "java");
   Crew n1 = n; //copy constructr called
   Crew n2 = Crew(10);
   n2 = n1; //assignment operator called


}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote