C++ Primer 4th. Ed. - Exercise 1.26

Tags:    c++

Jeg er ved at studere Lippman's "C++ Primer" 4th. Ed.
Exercise 1.26
Hvor der står noget i retning af:

sum = sum + newItem;

de skriver så i bogen:
why didn't we use the compound assignment operator?

Jeg kan ikke umiddelbart se forskellen på:

sum = sum + newItem;
og
sum += newItem;

Hvis nogen af jer kender bogen, har i måske et
svar på dette ;-)


Hilsen

Ib




Indlæg senest redigeret d. 21.10.2007 14:13 af Bruger #9738
Nu kender jeg ikke (al) konteksten, men at benytte
sum += newItem;
har fordele i form af øget skrivbarhed og større fejltollerens.

Forstil dig variablerne:
sum1, sum11, newItem

Man kan måske nemt komme til at skrive
sum11 = sum1 + newItem;
i stedet for
sum11 = sum11 + newItem;

Og dette kan sikres ved at benytte
sum11 += newItem;
i stedet.

Blot et bud...




Og dette kan sikres ved at benytte
sum11 += newItem;
i stedet.

Blot et bud...


Siden han spørger hvorfor han IKKE valgte den metode er det nok ikke et særligt godt bud :). Har du ikke flere informationer. Hvilken datatype har variablerne?



Hvis sum og/eller newItem er en class som I har lavet kræver det en += operator for at kunne udføre +=.

Selv om "x = x + y" normalt er det samme som "x += y" er det nogle andre operatorer der komme i funktion, og hvis programmøren synes at den første skal installere Linux på maskinen og den sidste skal nøjes med at formatere hardisken er det det der sker (normal ville man måske forvente at de to tal blev lagt sammen, og resultatet puttet i x).

Så svaret kan være at i ikke bruger "the compound assignment operator" fordi I ikke har lavet en.



Hvis sum og/eller newItem er en class som I har lavet kræver det en += operator for at kunne udføre +=.

Selv om "x = x + y" normalt er det samme som "x += y" er det nogle andre operatorer der komme i funktion, og hvis programmøren synes at den første skal installere Linux på maskinen og den sidste skal nøjes med at formatere hardisken er det det der sker (normal ville man måske forvente at de to tal blev lagt sammen, og resultatet puttet i x).

Så svaret kan være at i ikke bruger "the compound assignment operator" fordi I ikke har lavet en.



Programmet ser således ud:

Fold kodeboks ind/udKode 


Hilsen

Ib



Indlæg senest redigeret d. 21.10.2007 15:55 af Bruger #9738
Jeg tror vi skal se NewItem.h for at kunne hjælpe.



Jeg tror vi skal se NewItem.h for at kunne hjælpe.


Jeg omdøbte filen til NewItem.h - men man må godt
distribuere den egentlige kode, bare man ved hvor
den kommer fra.

Dette er taget fra:
(C++ Primer 4th. Edition - Exercise 1.26)


Okay, her er den egentlige kode:

Fold kodeboks ind/udKode 


Her er header filen:

Sales_item.h

Fold kodeboks ind/udKode 




Indlæg senest redigeret d. 21.10.2007 20:53 af Bruger #9738
Jeg har svært ved at se at det skulle gøre nogen forskel...
Står svaret ikke i bogen?



Jeg har svært ved at se at det skulle gøre nogen forskel...
Står svaret ikke i bogen?


Nej, der er ikke svar til nogen af øvelserne...



I så fald; prøv at ændre til += operatorn og se om det gør nogen forskel, hvilken?



t