printf wyrzuca losowe wartości

printf wyrzuca losowe wartości
VD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
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 .

Kopiuj

#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;
}
fasadin
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4883
1

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

VD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

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

Kopiuj

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

z

Kopiuj
s.x=4200848 
s.y=2686824 
whatever=4 
gośćabc
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
  • Postów: 500
2
Kopiuj
Derived(int whatever) : Base(SomeS{},whatever) {}
VD
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0
gośćabc napisał(a):
Kopiuj
Derived(int whatever) : Base(SomeS{},whatever) {}

Teraz wszystko jasne, dziękuje za pomoc.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.