Tjena!
Jag håller på att lära mig C++ och har en liten fråga:
Om en funktion ser ut så här:
int & Function(int &x)
{
return x;
}
Vad innebär det första & tecknet????
------------------
// Erik
6 svar · 435 visningar · startad av erik_r
Tjena!
Jag håller på att lära mig C++ och har en liten fråga:
Om en funktion ser ut så här:
int & Function(int &x)
{
return x;
}
Vad innebär det första & tecknet????
------------------
// Erik
Funktionsfråga särskrivs inte.
int & Function(int &x)
innebär att funktionen returnerar en int-referens. En referens fungerar ungefär som en pekare fast med undantaget att den är säker. Den pekar alltså alltid till en variabel. Genom referensen kan du ändra orginalvärdet på variabeln.
int &var = Function(...);
var = 5; //Ändrar värdet på variabeln som Function returnerar till 5
Referenser kan automatiskt konverteras till vanliga variabler så därför fungerar även detta.
int var = Function(...);
Jag hoppas att du förstår ungefär. :)
------------------
- Swey
A hacker from the south
[Redigerat av Swey den 10 mar 2001]
Oj Oj en sak till!
En funktion inuti en Counter klass ser ut så här:
const Counter& operator++ ();
{
++itsVal
return *this
}
Den här funktionen ska ju returnera en referens inte en pekare. För *this är väll en pekare?
Varför är funktionen const när den ändrar på itsVal?
Vad är en this-pekare och hur vet den vad den ska peka på när funktionen inte tar emot några argument?
------------------
// Erik
[Redigerat av erik_r den 11 mar 2001]
[Redigerat av erik_r den 11 mar 2001]
Det vore ohyggligt korkat att göra en inkrementor icke-modifierande, men just den här funktionen är inte const. Titta på skillnaden mellan dessa två rader, den andra gör att du inte kan modifiera någon av klassens medlemsvariabler.
const Counter& operator++ ();
const Counter& operator++ () const;
this-pekaren är helt enkelt en pekare till den aktuella klassen.
Kanske dags att skaffa en bok?
------------------
Snyggt, Chainsaw. Tränar inför VM i core dump, ser jag?
Jag håller faktiskt på med att ta mig igenom en c++ bok(teach yourselt C++ in 21days) men jag tycker den förklarar lite dåligt så jag behövde lite förtydliganden.
------------------
// Erik