printf wyrzuca losowe wartości

0

Witam. Mam pytanie odnośnie poniższego kodu. Dlaczego kod w klasie Base który został przeze mnie wykomentowany powoduje że funkcja printf wyrzuca losowe wartości s.x oraz s.y .


#include <iostream>
using namespace std;

struct SomeS
{

	int x;
	int y;

	SomeS() : x(0), y(0) {};
	SomeS(int x, int y ) : x(x),y(y) {};
};


class Base
{
protected:
	SomeS s;
	int whatever;

public:
	Base(const SomeS &s,int whatever): /*s(s),*/ whatever(whatever){};
	void print()
	{
		printf("s.x=%d \n",  s.x);
		printf("s.y=%d \n",  s.y);
		printf("whatever=%d \n",  whatever);
	};



};

class Derived: public Base
{
public:

	Derived(int whatever) : Base(s,whatever) {};


};




int main()
{


	Derived C(4);
	C.print();

return 0;
}
1

jaka wartosc ma zmienna s w klasie pochodnej? w sensie gdzie masz ustawienie wartosci tego s?

0

s powinno przyjmować domyślnie x=0 i y=0; zgodnie z konstruktorem struktury SomeS.


Wynik: bez linijki s(s)
s.x=0 
s.y=0 
whatever=4 

z

s.x=4200848 
s.y=2686824 
whatever=4 
2
Derived(int whatever) : Base(SomeS{},whatever) {}
0
gośćabc napisał(a):
Derived(int whatever) : Base(SomeS{},whatever) {}

Teraz wszystko jasne, dziękuje za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1