webForumDet fria alternativet

Funktions fråga

6 svar · 435 visningar · startad av erik_r

erik_rMedlem sedan maj 200083 inlägg
#1

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

SweyMedlem sedan apr. 20003 971 inlägg
#2

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]

erik_rMedlem sedan maj 200083 inlägg
#3

Nu blev det genast klarare :)
Tack för hjälpen!

------------------
// Erik

erik_rMedlem sedan maj 200083 inlägg
#4

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]

ChainsawMedlem sedan sep. 20001 124 inlägg
#5

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?

erik_rMedlem sedan maj 200083 inlägg
#6

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

PeWMedlem sedan juni 200010 432 inlägg
#7

Ahh sånt diskuterades här. Prata boken är måhända tråkig men mer komplett än SAMS serie... :e

*fick bara lite vatten på kvarn*

------------------
Ancilla, face mea laganum!

124 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)