C ++ je programski jezik opće namjene. Izvorno je razvijen kao produžetak za C i zadržava sličnu sintaksu, ali sada je to sasvim drugi jezik. Koristite ovu oznaku za pitanja o kodu koji treba kompilirati pomoću C ++ kompilatora. Koristite oznaku inačice za pitanja vezana uz određenu standardnu ​​verziju [C ++ 11], [C ++ 17], itd.

Što je C ++?

C ++ je statički tipičan , univerzalni (obično) kompilirani, multi-paradigmski, univerzalni programski jezik srednje razine; ne smije se brkati s C ili C ++ / CLI . Razvio ga je početkom 1980-ih Bjarn Straustrup , izvorno kao skup proširenja programskog jezika C. Oslanjajući se na C, C ++ je poboljšao sigurnost tipova i dodao, između ostalih funkcija, automatsko upravljanje resursima, objektnu orijentaciju, opće programiranje i upravljanje iznimkama.


Novi u C ++?

Ako ste novi u programiranju ili dolazite u C ++ s drugog programskog jezika, preporučljivo je imati dobru knjigu za učenje jezika. Imamo detaljan popis knjiga .

Ako tražite dobre prevodioce, GCC je najčešće korišteni kompajler na Linuxu i drugim platformama sličnim Unixu; C> je službeni kompajler za Mac i FreeBSD; Microsoft Visual C ++ najčešće se koristi u sustavu Windows. Intelov kompilator također se često koristi za optimizirane numeričke izračune u sustavima Windows, Linux i Mac.

Turbo-C ++ 3.0 od 1991. je iznimno zastario i definitivno se ne preporuča. Vidi prethodni odlomak za slobodan izbor iz ovog tisućljeća.

Pridružite nam se u sobi za razgovor u kojoj ćemo raspravljati o C ++u, programiranju općenito, pa čak i drugim stvarima kada sunce zalazi i dosadi. Ne zaboravite svoj smisao za humor, ali ga držite civiliziranim.


Označavanje

Prilikom objavljivanja pitanja o C ++ programiranju, svakako uključite:

  • Informacije o ciljnom sustavu i prevodiocu. To uključuje ime kompajlera, verziju i postavke korištene za kompilaciju.
  • Ako se vaše pitanje odnosi na jednu jezičnu verziju, dodajte ili . Pitanja o promociji trebala bi dodati oznaku za . Pojedinosti o različitim verzijama možete pronaći u nastavku ovog wikija.
  • Ako pitanje ne navodi izričito koja se verzija C ++ standarda koristi, pretpostavlja se da se koristi trenutna verzija. To je, ovisno o verziji ISO 14882, koja je trenutno navedena kao aktivna. Imajte to na umu kada odgovarate ili komentirate pitanja označena .

Korištenje i zajedno

C i C ++ su dva različita i često nekompatibilna jezika. Pokušajte ne koristiti obje oznake u istom pitanju, osim ako imate dobre razloge.

Pitanje treba označiti samo ako:

  • Sadrži čisti C, bez traga C ++, ili pitanja s kodom koji može biti bilo koji jezik.
  • Kôd se kompilira pomoću C kompilatora.

Pitanje treba označiti samo ako:

  • Sadrži kod sa svim C ++ funkcijama. Čak i ako kod može biti "stil C".
  • Kôd se kompilira pomoću C ++ kompilatora.

Pitanje treba označiti s i , ako se odnosi na:

  • Specifične razlike između C i C ++.
  • Kompatibilnost ili prijenos koda između C i C ++.
  • C + + kod koji koristi C knjižnice (na primjer, kod koji koristi extern "C" ).

Pravila uređivanja i moderiranja za poruke označene i :

Za uređivanje / ponovno označavanje / moderiranje pitanja s obje oznake, preporučuje se da imate sva prava za uređivanje, kao i ikonu sa zlatnim ili zlatnim .

Ako naiđete na poruku s obje oznake, uredite / ponovno označite, ako je potrebno, u skladu s gore navedenim pravilima. Ako možete čitati objavljeni kôd jeziku, jednostavno uredite oznake. Izbjegavajte poticanje korisnika "je li to C ili C ++?" u komentarima, ako je pitanje doista nejasno.

Jedan primjer nejasnog pitanja je kada korisnik izričito navede da programira u C-u, ali objavljuje poruke iz koda ili poruke iz kompilatora za C ++. Ako je tako, zatražite pojašnjenje i zaključite glasovanje kao nejasno.

"C ili C ++ je u redu", mišljenja OP-a jasan su pokazatelj lošeg ili nejasnog pitanja. Odgovori mogu biti vrlo različiti ovisno o odabranom jeziku. Zatražite pojašnjenje, nejasno / preširoko, sve dok FI to ne razjasni.

Budite oprezni pri ponovnom označavanju pitanja nakon što su odgovori postavljeni, pogotovo ako već imate odgovore na C i na C ++. U takvim slučajevima, oznake treba ostaviti same, jer će njihovo mijenjanje poništiti objavljene odgovore.

Odgovore s C ++ kodom na C pitanje koje nikada nije bilo označeno treba izbrisati jer nisu povezane s temom. Provjerite povijest uređivanja pitanja prije nego označite / izbrišete takve odgovore kako biste bili sigurni da pitanje nikada nije imalo C ++ oznaku.


C ++ 11

Jezični standard ostao je gotovo nepromijenjen dugo vremena, ali je 2011. godine novi standard C ++ 11 (ranije poznat kao C ++ 0x) objavljen u ISO / IEC 14882: 2011 . Umjesto pristupa velikog praska, postupno se uvodi kako kompajleri podržavaju nove jezične značajke. Pogledajte Bjarne Stroustrup C + + 11 FAQ kako biste saznali što je novo u jeziku, te pogledajte svoj prevodilac FAQ kako biste saznali koje su od ovih funkcija trenutno podržane:

Nekoliko funkcija o kojima se raspravljalo za C ++ 11 preneseno je u sljedeću iteraciju.


C ++ 14

C ++ 14 je mali dodatak C ++ 11. Odobren je u kolovozu 2014. i objavljen u prosincu iste godine. Prethodno nazvan C ++ 1y, budući da je godina odobrenja bila nedefinirana. Mnogi popularni kompilatori već imaju određenu razinu podrške za C ++ 14.


C ++ 17

C ++ 17 dodaje još nekoliko osnovnih funkcija (a neke manje). Obično se naziva C ++ 1z ili C ++ 17, budući da je tehnički rad na novom standardu dovršen u ožujku 2017. godine. Nacrt standarda odobrio je ISO (jednoglasno) u rujnu 2017. i službeno objavljen u prosincu 2017. godine.


C ++ 20

Započeli su radovi na promjenama standarda za C ++ 2a ili C ++ 20 s očekivanim datumom objavljivanja standarda 2020. godine.

Sljedeće (i više) nove značajke već su usvojene u nacrtu C ++ 20:

  • trostruka usporedba pomoću novog operatora <=>
  • dodijeljeni inicijalizatori (na temelju funkcije C99 s nekim ograničenjima)
  • popisa parametara uzorka u lambda izrazima
  • dodatna varijabla s ciklusom for domet
  • Paketna proširenja u lambda init-capture

Trenutno se razmatraju brojne nove značajke, uključujući:


Internetski prevodioci

Ako želite isprobati C ++, možete isprobati jednu od sljedećih online kompilacijskih usluga:



C ++ FAQ stack overflow


Vanjska često postavljana pitanja


Ostali vanjski resursi


Chat