وقتی که &o رو return می کنی یعنی این که داری آدرس o. رو return می کنی
بعد این که کد بالا درست نیست چون وقتی که تابع return میشه o پاک میشه و آدرسی که برگشت دادین بی اعتبار میشه
یا باید o رو با مقدار برگردونین یا این که داخل تابع از new استفاده کنین
یعنی به این شکل
point* line::intersection(line* L)
{
int x,y;
x=(this->arzAzMabda - L->arzAzMabda) / (L->m - this->m);
y=(L->m)*x + L->arzAzMabda;
point* o= new point(x,y);
return o;
}
//ya
point line::intersection(line* L)
{
int x,y;
x=(this->arzAzMabda - L->arzAzMabda) / (L->m - this->m);
y=(L->m)*x + L->arzAzMabda;
point o(x,y);
return o;
}