Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- class CMieszacz{
- protected:
- /* Można ustawić tylko RAZ, a potem NIE MOŻNA ZMIENIC (oczywiscie tyczy sie to jednekgo obiektu, bo kazdy obiekt moze miec inna wartosc)
- Inicjalizacja - tylko poprzez listę inicjalizującą w konstruktorze
- */
- const int m_nMix;
- /* 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)
- Inicjalizacja - tylko poza klasą poprzez typ NAZWAKLASY::zmienna = wartosc
- */
- static int pam;
- char* m_pNapis;
- public:
- CMieszacz(int , char *);
- ~CMieszacz();
- CMieszacz(CMieszacz & wzor);
- void operator=(CMieszacz & wzor);
- friend ostream & operator<<(ostream &wyjscie, const CMieszacz & wzor);
- };
- CMieszacz::CMieszacz(int a, char *s): m_nMix(pam){ // inicjalizacja const ( nie da sie poprzez =, czyli m_nMix=pam )
- this->pam=a;
- this->m_pNapis=new char[strlen(s)+1];
- strcpy(m_pNapis,s);
- }
- CMieszacz::~CMieszacz(){
- delete m_pNapis;
- }
- 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
- {
- this->pam = wzor.pam;
- this->m_pNapis = new char[strlen(wzor.m_pNapis)+1];
- strcpy(m_pNapis,wzor.m_pNapis);
- }
- void CMieszacz::operator=(CMieszacz & wzor){
- if(&wzor != this) // zabezpieczenie przed przypisaniem do samego siebie
- {
- this->pam=wzor.pam;
- this->m_pNapis = new char[strlen(wzor.m_pNapis)+1];
- strcpy(this->m_pNapis,wzor.m_pNapis);
- }
- }
- ostream & operator<<(ostream &wyjscie, const CMieszacz & wzor)
- {
- return wyjscie << "\npam: " << wzor.pam << "\nm_nMix: " << wzor.m_nMix << "\nm_pNapis: " << wzor.m_pNapis << endl;
- }
- 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
- int main(){
- CMieszacz cm(1,"numer1");
- CMieszacz cm2(cm);
- CMieszacz cm3=cm2;
- cout<<cm<<cm2<<cm3;
- CMieszacz * nowycm = new CMieszacz(5,"123");
- cout<< *nowycm;
- delete nowycm;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement