Dlaczego po przypisaniu wartości do tablicy klas, przypisało się 0 z klasy bazowej a nie 1? z klasy pochodnej jak zostało przekazane
#include <iostream>
using namespace std;
class Towar {
public:
int i;
Towar(int i = 0)
: i(i){};
};
class Towar_poch : public Towar {
public:
int i;
Towar_poch(int i = 1)
: i(i){};
};
class koszyk {
public:
Towar object[4];
koszyk(Towar object1, Towar object2)
{
object[0] = object1;
object[1] = object2;
cout << object[0].i << endl;
cout << object[1].i << endl;
};
};
int main(int argc, char** argv)
{
Towar object;
Towar_poch object2;
koszyk object3(object, object2);
return 0;
}
tutaj tak samo: (bo prubuje zobaczyć różnicę między przekazywaniem przez adres, a po prostu wprost )
#include <iostream>
using namespace std;
class Towar {
public:
int i;
Towar(int i = 4)
: i(i){};
virtual void name()
{
cout << "f";
};
};
class Towar_poch : public Towar {
public:
int i;
Towar_poch(int i = 1)
: i(i){};
void name()
{
cout << "f";
}
};
class koszyk {
public:
Towar* object[4];
koszyk(Towar* object1, Towar* object2)
{
object[0] = object1;
object[1] = object2;
cout << object[0]->i << endl;
cout << object[1]->i << endl;
};
};
int main(int argc, char** argv)
{
Towar object;
Towar_poch object2;
koszyk object3(&object, &object2);
return 0;
}