IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Funkce a prototypy v C++

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Tlapka
Člen
Avatar
Tlapka:16.10.2014 0:19

Chtěla bych se zeptat na ten princip s těmi více soubory. Už jsem tento způsob viděla, ale dvě věci na něm nechápu:

  1. Jak program najde definici (funkci včetně těla), když soubor "umocni.cpp" není nikde includován (includován je jen "umocni.h")?
  2. Proč se používá tento způsob? Nebylo by lepší psát funkce jen jednou, jak je tomu v prvním případě a ušetřit si tak vytváření dalších dvou souborů navíc? Nebo v případě OOP vytvořit jeden soubor pro jednu třídu, jak je tomu např. v Javě?

Předem díky za odpovědi. ;-)

 
Odpovědět
16.10.2014 0:19
Avatar
MrPabloz
Člen
Avatar
Odpovídá na Tlapka
MrPabloz:16.10.2014 9:24
  1. Překládač automaticky pospojuje .h a .cpp nebo .obj co k sobě patří = stejný název. Takže tohle dělá překládač :)
  2. Protože jsou určité návrhové vzory, které se používají, pro c++ byl vymyšlen tenhle, chtělo se myslím omezit používání transakčnímu skriptu a měl být přehledný kod. Ale je tu ještě jeden důvod, pokud dáš někome část svého projektu, např. vytvoříš knihovnu, která má funkce a chceš, aby nikdo nevěděl jak vypadají, pospleš dotyčnému obj soubor, zkompilovan z .cpp, ale nevěděl by pak nikdo, jak to použít, proto máš hlavičkový soubor, který jen popisuje syntaxe atd. Tedy neví nikdo nic o funkčnosti, jen ví názvy fci a co vrací a jaké má vstupy, tohle je důležitější než vzory :) a proč ne jak Java? Protože Java si to umí přečíst a nabídne použití v intelisense, ale tohle dřív c++ neumělo :)
Odpovědět
16.10.2014 9:24
Harmonie těla a duše, to je to, oč se snažím! :)
Avatar
coells
Tvůrce
Avatar
Odpovídá na Tlapka
coells:16.10.2014 13:00
  1. při překladu dáš cestu k .cpp souborům přímo překladači, includované soubory už dohledá sám

gcc -o program.o *.c *.cpp
tím řekneš překladači, že chceš přeložit všechny soubory s danými koncovkami a includované soubory už si dohledá sám
pokud pracuješ v IDE, vyvolá prostředí za tebe takový příkaz a postará se o celou konfiguraci samo

  1. protože C a C++ jsou jednoprůchodové překladače

to znamená, že než se můžeš odkázat na nějakou funkci nebo proměnnou nebo typ, musíš je nejprve deklarovat
k tomu slouží headery, kde máš všechny potřebné deklarace, abys mohla prolinkovat jednotlivé knihovny

 
Odpovědět
16.10.2014 13:00
Avatar
Tlapka
Člen
Avatar
Odpovídá na coells
Tlapka:16.10.2014 22:07

Aha, díky vám oběma, vypadá to, že se toho budu muset ještě hodně učit. Dík, hezké vysvětlení. ;-)

 
Odpovědět
16.10.2014 22:07
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.