PDA

View Full Version : مبتدی: اشاره گرها به اشیاء - در مورد یک برنامه



smemamian
یک شنبه 10 دی 1391, 15:02 عصر
سلام دوستان

برنامه زیر مشکلش چیه ؟

#include <iostream>

using namespace std;
class myclass
{
int x , y ;
public:
myclass(int a , int b)
{
x = a ; y = b ;
}

int get_x()
{
return x ;
}
int get_y()
{
return y ;
}
};

int main()
{
myclass ob[4][2] =
{
myclass(1,2),
myclass(3,4),
myclass(5,6),
myclass(7,8),
};
myclass *p ;
p = ob ;
for (int i=0 ; i<4 ; i++)
{
cout << p->get_x() << " " ;
cout << p->get_y() << endl ;
p++ ;
}
return 0;
}

H_G_G_I
یک شنبه 10 دی 1391, 15:37 عصر
#include <iostream>

using namespace std;
class myclass
{
int x , y ;
public:
myclass(){};
myclass(int a , int b)
{
x = a ; y = b ;
}

int get_x()
{
return x ;
}
int get_y()
{
return y ;
}
};

int main()
{
myclass ob[4][2] =
{
myclass(1,2),
myclass(3,4),
myclass(5,6),
myclass(7,8),
};

myclass *p ;
p = (myclass*)ob ;
for (int i=0 ; i<4 ; i++)
{
cout << p->get_x() << " " ;
cout << p->get_y() << endl ;
p++ ;
}

system("pause");
return 0;
}


باید سازنده پیشفرض می زاشتی !
p = ob رو هم باید ینطوری می نوشتی

p = (myclass*)ob ;

H_G_G_I
یک شنبه 10 دی 1391, 15:40 عصر
البته اینم دراصل باید اینطوری مقدر بدی !

myclass ob[4][2] =
{
{ myclass(1,2),myclass(3,4) },
{ myclass(5,6),myclass(7,8) },
{ myclass(9,10),myclass(11,12) },
{ myclass(13,14),myclass(15,16) }
};

smemamian
یک شنبه 10 دی 1391, 16:10 عصر
باید سازنده پیشفرض می زاشتی !

کجاها و یا در چه مواقعی باید سازنده پیش فرض گذشت ؟

ولی الان بدون سازنده پیش فرض هم اجرا شد !

#include <iostream>

using namespace std;
class myclass
{
int x , y ;
public:
myclass(int a , int b)
{
x = a ; y = b ;
}

int get_x()
{
return x ;
}
int get_y()
{
return y ;
}
};

int main()
{
myclass ob[4][2] =
{
{ myclass(1,2),myclass(3,4) },
{ myclass(5,6),myclass(7,8) },
{ myclass(9,10),myclass(11,12) },
{ myclass(13,14),myclass(15,16) }
};
myclass *p ;
p = (myclass *)ob ;
for (int i=0 ; i<4 ; i++)
{
cout << p->get_x() << " " ;
cout << p->get_y() << endl ;
p++ ;
}
return 0;
}

smemamian
یک شنبه 10 دی 1391, 16:20 عصر
تابع پیش فرض ;نمی خواد ! البته گذاشتن یا نذاشتنش فرقی نداره

mofid002006@gmail.com
یک شنبه 10 دی 1391, 16:31 عصر
اصولا نیازی به نوشتن سازنده ی پیش فرض نیست
اگه سازنده ی پیش فرض نداشته باشی خود کامپایلر یه دونه می سازه

زمانی سازنده ی پیش فرض توسط خود برنامه نویس نوشته میشه که بخواد موقع ساخت شی جدید کار خاصی انجام بشه یا عناصر مقادیر خاصی بگیرن
مثلا توی کدهای بالا اگه سازنده ی پیش فرض نوشته نشه مقادر x , y چون از نوع int هستن با مقدار اولیه ی صفر پر میشن حالا اگه بخوای اینجوری نشه می تونی خودت سازنده ی پیش فرض رو بنویسی