Bli bättre på C++ - smarta tips!

Permalänk

Bli bättre på C++ - smarta tips!

Hej,

Om du snabbt vill bli bättre på C++ så har jag skrivit två korta artiklar som kan hjälpa både nybörjaren och den mer erfarna C++-programmeraren. Artiklarna är utformade som minnesregler som du lätt kan tillämpa på din egen programkod!

- Det första tipset handlar om referenser och pekare: http://www.johnnybigert.se/referenser_och_pekare.html

- Det andra tipset handlar om minneshantering: http://www.johnnybigert.se/minneshantering.html

- Om du vill vara säker på att inte missa några smarta tips i framtiden, läs mer här: http://www.johnnybigert.se/nyhetsbrev.html

Jag är jätteintresserad av era åsikter, så ge mig gärna feedback här i forumet!

Om mig: Jag har programmerat C++ sen 1995 och undervisat C++ sedan 2000 på KTH, i näringslivet och i form av privatlektioner. Artiklarna ovan handlar om det jag tycker folk behöver mest hjälp med, så jag hoppas att de är till nytta!

MVH / Johnny Bigert

Visa signatur

Bli bättre på C++ - smarta tips på www.johnnybigert.se/tips.html

Permalänk
Glömsk

Eloge till dig som skriver om vad du kan! Att skriva om programmering är i min mening nästan lika roligt som att faktiskt programmera, så jag förståer vad du gör.

Här har du ett tips på något eventuellt att skriva om: http://en.wikipedia.org/wiki/Opaque_pointer Användbar teknik men relativt okänd.

Visa signatur

...man is not free unless government is limited. There's a clear cause and effect here that is as neat and predictable as a law of physics: As government expands, liberty contracts.

Permalänk
Citat:

Ursprungligen inskrivet av Psionicist
Eloge till dig som skriver om vad du kan! Att skriva om programmering är i min mening nästan lika roligt som att faktiskt programmera, så jag förståer vad du gör.

Här har du ett tips på något eventuellt att skriva om: http://en.wikipedia.org/wiki/Opaque_pointer Användbar teknik men relativt okänd.

Hej Psionicist,

Ja, men bara nästan lika kul.

"Opaque pointer" är faktiskt med i artikeln om minneshantering (det s.k. pimpl-idiomet). Det diskuteras bara i förbigående, som ett sätt att minska beroendena mellan dina headerfiler.

Jag ska ta ditt tips i beaktande. Snart kommer det kanske en artikel handlar om "opaque pointers" (dvs framåtdeklarering av klasser etc.)!

MVH / Johnny Bigert

Visa signatur

Bli bättre på C++ - smarta tips på www.johnnybigert.se/tips.html

Permalänk

Mycket bra guider! Bra förklaringar, tydligt och lättläst.

Tummen upp!

Visa signatur

Min dator är bättre än din.

Permalänk

Ruskigt bra information. Nääääästan så man vill läsa på KTH enbart för dina lektioner.

Permalänk

Väl skrivet! Jag älskar hur guiden i början refererar till dig som "en av världens bästa på C++" (jag är inte sarkastisk!).

Visa signatur

"I cannot. Yet I must. How do you calculate that? At what point on the graph do 'must' and 'cannot' meet? Yet I must. But I cannot."

Permalänk
Citat:

Ursprungligen inskrivet av Tungviktarn
Mycket bra guider! Bra förklaringar, tydligt och lättläst. Tummen upp!

Citat:

Ursprungligen inskrivet av hagbarddenstore
Ruskigt bra information. Nääääästan så man vill läsa på KTH enbart för dina lektioner.

Citat:

Ursprungligen inskrivet av Ulrik Uppkastare
Väl skrivet! Jag älskar hur guiden i början refererar till dig som "en av världens bästa på C++" (jag är inte sarkastisk!).

Tack så hemskt mycket! Det är feedback som er som gör det roligt att skriva!

Och Hagbard, jag är tyvärr inte kvar på KTH längre. Nu är det eget företagande som gäller. C++ naturligtvis, kurser och konsultning.

Visa signatur

Bli bättre på C++ - smarta tips på www.johnnybigert.se/tips.html

Permalänk
Medlem

Bokmärkad!

Visa signatur

|| R9 7950X MSI PRO X670-P WIFI 32GB-DDR5-6400c32 MSI RTX4080 Ventus 3X OC || CORE i9 12900KF MSI Z690 Tomahawk WIFI DDR4 32GB-3600c16 Gear1 TUF RTX3080 OC V2 || R7 5800X3D X570S CH8 Extreme 32GB-3800c18 Gigabyte RTX3080 GAMING OC || R9 5900X(B2) B550-F 32GB-3800c18 EVGA RTX3070 FTW Ultra || R9 3900X X470-Prime Pro 32GB-3200c16 MSI RTX2070 Super ||

Permalänk
Citat:

Ursprungligen inskrivet av the squonk
Bokmärkad!

Härligt! Men vore det inte enklare att anmäla sig till nyhetsbrevet på http://www.johnnybigert.se/nyhetsbrev.html ? Då missar du inga tips.

(Event driven istället för polling, skulle man kunna säga!)

Visa signatur

Bli bättre på C++ - smarta tips på www.johnnybigert.se/tips.html

Permalänk

En liten notis: I C är det inte helt ovanligt att använda dynamiskt minne eftersom det går att försäkra sig om (förutsatt att implementationen/operativsystemet stödjer detta) att minnet verkligen är tillgängligt. Returnerar malloc med vänner NULL kan en lämplig åtgärd göras, även om det vanligaste kanske är att avbryta programmet. Jag antar att något motsvarande är möjligt när man använder "new", men hur vanligt är det att bry sig om detta i C++?

Visa signatur

"I cannot. Yet I must. How do you calculate that? At what point on the graph do 'must' and 'cannot' meet? Yet I must. But I cannot."

Permalänk
Inaktiv
Citat:

Ursprungligen inskrivet av Ulrik Uppkastare
En liten notis: I C är det inte helt ovanligt att använda dynamiskt minne eftersom det går att försäkra sig om (förutsatt att implementationen/operativsystemet stödjer detta) att minnet verkligen är tillgängligt. Returnerar malloc med vänner NULL kan en lämplig åtgärd göras, även om det vanligaste kanske är att avbryta programmet. Jag antar att något motsvarande är möjligt när man använder "new", men hur vanligt är det att bry sig om detta i C++?

new kastar std::bad_alloc om det inte går att allokera tillräckligt med minne, vilket inte är helt lätt att bara ignorera

Permalänk
Hedersmedlem
Citat:

Ursprungligen inskrivet av poppeman
new kastar std::bad_alloc om det inte går att allokera tillräckligt med minne, vilket inte är helt lätt att bara ignorera

Det är väl ungefär lika lätt/svårt att ignorera som att malloc returnerar NULL? Uppkastarens fråga gäller nog snarare i vilken utsträckning c++-programmerare tillämpar felhantering, vilket förmodligen varierar från person till person och projekt till projekt.

Permalänk
Inaktiv
Citat:

Ursprungligen inskrivet av Elgot
Det är väl ungefär lika lätt/svårt att ignorera som att malloc returnerar NULL? Uppkastarens fråga gäller nog snarare i vilken utsträckning c++-programmerare tillämpar felhantering, vilket förmodligen varierar från person till person och projekt till projekt.

Om man inte har någon matchande try/catch så stängs programmet. Ett program kan tugga på ett bra tag innan det dör av en nullpekare. Jag vill helst inte argumentera om för- eller nackdelar utan bara poängtera vad motsvarigheten var i c++.

Permalänk
Hedersmedlem

*tråd rensad*
monkehs skräpinlägg borttaget.

Visa signatur

Forumregler | Feedbackforumet | Något som behöver modereras? Tryck på Anmäl inlägget och ge en anledning, någon moderator kommer granska inlägget och göra (egen) bedömning
"Fate. Protects fools, little children and ships named Enterprise." - Riker - ST:TNG

Permalänk
Citat:

Ursprungligen inskrivet av poppeman
new kastar std::bad_alloc om det inte går att allokera tillräckligt med minne, vilket inte är helt lätt att bara ignorera

Poppeman har bra koll.

Och om ni nu vill att new ska returnera null om ni får slut på minne så går det också, t.ex. int *p = new (std::nothrow) int; Och nä, inte ens jag tycker att syntaxen är vacker...

Visa signatur

Bli bättre på C++ - smarta tips på www.johnnybigert.se/tips.html