Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

Diskusia – Funkcie a prototypy v C ++

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
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. ;-)

 
Odpovedať
16.10.2014 0:19
Avatar
MrPabloz
Člen
Avatar
Odpovedá 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 :)
Odpovedať
16.10.2014 9:24
Harmonie těla a duše, to je to, oč se snažím! :)
Avatar
coells
Tvůrce
Avatar
Odpovedá 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

 
Odpovedať
16.10.2014 13:00
Avatar
Tlapka
Člen
Avatar
Odpovedá 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í. ;-)

 
Odpovedať
16.10.2014 22:07
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!