Miért nem kapok hibaüzenetet az alábbi kódban?
int main()
{
SimpleCat &rCat = TheFunction();
int age = rCat.GetAge();
std::cout << "rCat is " << age << " years old!\n";
return 0;
}
SimpleCat &TheFunction()
{
SimpleCat Frisky (5,9);
return Frisky;
}
Az osztálydefiníció most nem számít.
A lényeg az, hogy olyan objektumra mutat a referenciám, ami a függvényből való kilépés után megszűnt, de a fordító nem dob ki rá hibaüzenetet.
Még annyi, hogy a függvény deklarálva lett előzőleg, azt a sort kihagytam:
SimpleCat &TheFunction();
Ez C++ nem C#, nem kapsz minden kis baklövésedért szép kis hibaüzenetet.
Arról nem beszélve, hogy a lokális változó sem szűnik meg azonnal biztosan (eleve mitől szűnne?) csak pont, hogy nem lesz rá garancia, hogy még létezik.
Mivel a program szintaktikailag helyes (a szabvány nyelvi szabályait betartja), ezért a fordító le tudja fordítani. Ennek ellenére tartalmazhat szemantikai hibákat amik a program hibás működéséhez vezetnek. A példádra egyébként szoktak figyelmeztetést dobni a fordítók.
Olvasmány:
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!