Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania bez odpowiedzi
Viewing all articles
Browse latest Browse all 21942

Problem z przeciążonym operatorem =

$
0
0

Witam, jak w temacie, mam problem z przeciążonym operatorem =. Nie do końca wiem na czym on polega ponieważ Składowe name jak i hobby są przypisywane do obiektu natomiast składowa weight zostaje wyzerowana mimo że miała inną wartość w obiekcie który był przypisywany.


#pragma once
#ifndef COW_H_
#define COW_H_

class Cow
{
	char name[20];
	char * hobby;
	double weight;
public:
	Cow();
	Cow(const char * nm, const char * ho, double wt);
	Cow(const Cow &c);
	~Cow();
	Cow & operator=(const Cow & c);
	void showCow() const;
};

#endif // !COW_H_
//implementacja metod klasy Cow
#include "stdafx.h"
#include "Header.h"
#include <iostream>
#pragma warning(disable : 4996)
using std::cout;
using std::endl;

Cow::Cow()
{
	name[0] = '\0';
	hobby = new char [1];
	hobby[0] = '\0';
	weight = 0;
}

Cow::Cow(const char * nm, const char * ho, double wt)
{
	strcpy(name, nm);
	hobby = new char[strlen(ho) + 1];
	strcpy(hobby, ho);
	weight = wt;
}

Cow::Cow(const Cow & c)
{
	strcpy(name, c.name);
	hobby = new char[strlen(c.hobby) + 1];
	strcpy(hobby, c.hobby);
}

Cow::~Cow()
{
	delete[] hobby;
}

 Cow & Cow::operator=(const Cow & c)
{
	if (this == &c)
		return *this;
	delete[]hobby;
	hobby = new char[strlen(c.hobby) + 1];
	strcpy(hobby, c.hobby);
	strcpy(name, c.name);
	weight = c.weight;
	return *this;
}

void Cow::showCow() const
{
	cout << "Imie: "<< name << endl;
	cout << "Hobby: "<< hobby << endl;
	cout << "Waga: "<< weight << endl;
}
//wlasciwy program testujacy interfejs klasy
#include "stdafx.h"
#include "Header.h"
#include <iostream>
using namespace std;
int main()
{
	Cow x;
	Cow w("andrzej", "pilka", 85);
	Cow z = w;
	cout << "x:"<< endl;
	x.showCow();
	cout << "z:"<< endl;
	z.showCow();
	cout << "w:"<< endl;
	w.showCow();
	w = x;
	cout << "w(x):"<< endl;
	w.showCow();
	system("pause");
    return 0;
}

 


Viewing all articles
Browse latest Browse all 21942

Trending Articles


TRX Antek AVT - 2310 ver 2,0


Автовишка HAULOTTE HA 16 SPX


POTANIACZ


Zrób Sam - rocznik 1985 [PDF] [PL]


Maxgear opinie


BMW E61 2.5d błąd 43E2 - klapa gasząca a DPF


Eveline ➤ Matowe pomadki Velvet Matt Lipstick 500, 506, 5007


Auta / Cars (2006) PLDUB.BRRip.480p.XviD.AC3-LTN / DUBBING PL


Peugeot 508 problem z elektroniką


AŚ Jelenia Góra