Advertisement
cristiano002

CMieszacz

Feb 6th, 2014
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.07 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class CMieszacz{
  5.  
  6. protected:
  7.     /* Można ustawić tylko RAZ, a potem NIE MOŻNA ZMIENIC (oczywiscie tyczy sie to jednekgo obiektu, bo kazdy obiekt moze miec inna wartosc)
  8.     Inicjalizacja - tylko poprzez listę inicjalizującą w konstruktorze
  9.     */
  10.     const int m_nMix;
  11.  
  12.     /* WSPÓLNA dla kadego obiektu klasy. Za każdym razem jak ją zmienisz, to zmieni się w każdym z obiektów klasy (bo jest wspólna)
  13.     Inicjalizacja - tylko poza klasą poprzez typ NAZWAKLASY::zmienna = wartosc
  14.     */
  15.     static int pam;
  16.  
  17.     char* m_pNapis;
  18.  
  19. public:
  20.     CMieszacz(int , char *);
  21.     ~CMieszacz();
  22.     CMieszacz(CMieszacz & wzor);
  23.     void operator=(CMieszacz & wzor);
  24.     friend ostream & operator<<(ostream &wyjscie, const CMieszacz & wzor);
  25. };
  26.  
  27. CMieszacz::CMieszacz(int a, char *s): m_nMix(pam){ // inicjalizacja const ( nie da sie poprzez =, czyli m_nMix=pam )
  28.     this->pam=a;
  29.     this->m_pNapis=new char[strlen(s)+1];
  30.     strcpy(m_pNapis,s);
  31. }
  32.  
  33. CMieszacz::~CMieszacz(){
  34.     delete m_pNapis;
  35. }
  36.  
  37. CMieszacz::CMieszacz(CMieszacz & wzor): m_nMix(-pam) // tutaj nie można zrobić m_nMix(-wzor.m_nMix), bo "-" modyfikuje wzor.m_nMix, a consta nie da sie zmienić ;p
  38. {
  39.     this->pam = wzor.pam;
  40.     this->m_pNapis = new char[strlen(wzor.m_pNapis)+1];
  41.     strcpy(m_pNapis,wzor.m_pNapis);
  42. }
  43.  
  44. void CMieszacz::operator=(CMieszacz & wzor){
  45.     if(&wzor != this) // zabezpieczenie przed przypisaniem do samego siebie
  46.     {
  47.         this->pam=wzor.pam;
  48.         this->m_pNapis = new char[strlen(wzor.m_pNapis)+1];
  49.         strcpy(this->m_pNapis,wzor.m_pNapis);
  50.     }
  51. }
  52.  
  53. ostream & operator<<(ostream &wyjscie, const CMieszacz & wzor)
  54. {
  55.     return wyjscie << "\npam: " << wzor.pam << "\nm_nMix: " << wzor.m_nMix << "\nm_pNapis: " << wzor.m_pNapis << endl;
  56. }
  57.  
  58. int CMieszacz::pam=0; // inicjalizacja static poza klasą (inaczej sie nie da). To zawsze musi być, nawet samo int CMieszacz::pam; bez wartości przypisanej
  59.  
  60. int main(){
  61.     CMieszacz cm(1,"numer1");
  62.     CMieszacz cm2(cm);
  63.     CMieszacz cm3=cm2;
  64.     cout<<cm<<cm2<<cm3;
  65.     CMieszacz * nowycm = new CMieszacz(5,"123");
  66.     cout<< *nowycm;
  67.     delete nowycm;
  68.  
  69.     return 0;
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement