Facebook
From Idiotic Octupus, 5 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 247
  1. #pragma once
  2. class Pojazd
  3. {
  4.         const int nrVIN;
  5.         char* nazwa;
  6. public:
  7.         Pojazd(const char* naz, int nr);
  8.         virtual ~Pojazd();
  9.         Pojazd(const Pojazd &p);
  10.         Pojazd & operator=(const Pojazd &p);
  11.         virtual void Wypisz(); //czysto wirtualna
  12.         const char* Nazwa()const;
  13.         int NrVIN()const;
  14. };
  15.  
  16.  
  17. #include "pch.h"
  18. #include "Pojazd.h"
  19. #include <string.h>
  20.  
  21. using namespace std;
  22.  
  23.  
  24. Pojazd::Pojazd(const char* naz, int nr):nrVIN(nr)
  25. {
  26.         nazwa = new char[strlen(naz)+1];
  27.         strcpy(nazwa,naz);// (gdzie ma skopiowac,skad ma skopiowac)
  28. }
  29.  
  30. Pojazd::~Pojazd()
  31. {
  32.         delete[] nazwa;
  33. }
  34.  
  35. Pojazd::Pojazd(const Pojazd &p):nrVIN(p.nrVIN)
  36. {
  37.         nazwa = new char[strlen(p.nazwa) + 1];
  38.         strcpy(nazwa, p.nazwa);
  39. }
  40.  
  41. Pojazd & Pojazd::operator=(const Pojazd &p)
  42. {
  43.         if (this != &p)
  44.         {
  45.                 if (this->nazwa != NULL) delete this->nazwa; //zwalnianie pamieci jesli juz mielismy jakas nazwa do tego obiketu do ktorego przypisuje
  46.                 nazwa = new char[strlen(p.nazwa) + 1];
  47.                 strcpy(nazwa, p.nazwa);
  48.         }
  49.         return *this;
  50. }
  51.  
  52. void Pojazd::Wypisz()   //czysto wirtualna metoda wiec zostawiamy
  53. {
  54.  
  55. }
  56.  
  57. const char* Pojazd::Nazwa()const
  58. {
  59.         return this->nazwa;
  60. }
  61.  
  62. int Pojazd::NrVIN()const
  63. {
  64.         return this->nrVIN;
  65. }
  66.  
  67.  
  68.  
  69. #pragma once
  70. #include "Pojazd.h"
  71. class Samochod : protected Pojazd
  72. {
  73. protected:
  74.         char* nrRejestr;
  75. public:
  76.         Samochod(const char* nrRej, const char* nazwa, int nVIN);
  77.         ~Samochod();
  78.         Samochod(const Samochod &wzor);
  79.         Samochod & operator=(const Samochod &wzor);
  80.         void Wypisz();
  81. };
  82.  
  83. #include "pch.h"
  84. #include "Samochod.h"
  85. #include <iostream>
  86. #include <string.h>
  87.  
  88. using namespace std;
  89.  
  90.  
  91. Samochod::Samochod(const char* nrRej, const char* nazwa, int nVIN):Pojazd(nazwa,nVIN)
  92. {
  93.         nrRejestr = new char[strlen(nrRej) + 1];
  94.         strcpy(nrRejestr, nrRej);
  95. }
  96.  
  97.  
  98. Samochod::~Samochod()
  99. {
  100.         delete[] nrRejestr;
  101. }
  102.  
  103. Samochod::Samochod(const Samochod &wzor) :Pojazd(wzor.Nazwa(), wzor.NrVIN())
  104. {
  105.         nrRejestr = new char[strlen(wzor.nrRejestr) + 1];
  106.         strcpy(nrRejestr, wzor.nrRejestr);
  107. }
  108.  
  109. Samochod & Samochod::operator=(const Samochod &wzor)
  110. {
  111.         if (this != &wzor)
  112.         {
  113.                 (Pojazd)(*this) = (Pojazd)(wzor);       //uzycie operatora przypisania dla klasy  poprawwic
  114.                 if (this->nrRejestr != NULL) delete[] nrRejestr;
  115.                 nrRejestr = new char[strlen(wzor.nrRejestr) + 1];
  116.                 strcpy(nrRejestr, wzor.nrRejestr);
  117.         }
  118.         return *this;
  119. }
  120.  
  121. void Samochod::Wypisz()
  122. {
  123.         cout << this->Nazwa() << "\t" << this->NrVIN() << "\t" << nrRejestr;
  124. }
  125.  
  126.  
  127.  
  128. #include "pch.h"
  129. #include <iostream>
  130. #include "Samochod.h"
  131.  
  132. int main()
  133. {
  134.         Samochod a("rej1", "naz1", 1);
  135.         Samochod b("rej2", "naz2", 2);
  136.         Samochod c("rej3", "naz3", 3);
  137.         Samochod d(b);
  138.         Samochod e("nic", "nic", 0);
  139.         e = a = c;
  140.         a.Wypisz();
  141.         std::cout << std::endl;
  142.         b.Wypisz();
  143.         std::cout << std::endl;
  144.         c.Wypisz();
  145.         std::cout << std::endl;
  146.         d.Wypisz();
  147.         std::cout << std::endl;
  148.         e.Wypisz();
  149.         return 0;
  150. }
  151.  
  152.