Funkční prototypy
Funkční prototypy v C++ mohou mít nastaveny implicitní hodnoty některých parametrů. Pokud se při volání dané funkce odpovídající argument vynechá, bude za něj dosazena implicitní hodnota.int Funkce(float f=6.1, int i =10);
//......
Funkce(3.14, 25);
// oba implicitní parametry budou přepsány
Funkce(2.5); // stejné jako volání
Funkce(2.5,10);
Funkce( ); // stejné jako volání
Funkce(6.1,10);
Pozor! Vynechá-li se první parametr, musí se vynechat i všechny následující.
Programovací jazyk C++ zavádí nové klíčové slovo inline, které způsobí zkopírování funkce na každé místo v kódu, kde je daná funkce volána. Funkce se bude chovat podobně jako by byla makrem. Na rozdíl od maker však umožňuje typovou kontrolu.
Reference
Jazyk C++ zavádí tzv. reference, které představují zvláštní druh proměnné. Na reference se můžeme dívat jako na jiná jména existujících proměnných. Deklarují se podobně jako ukazatele, jen místo znaku * vkládáme znak &. Jakmile však referenci deklarujeme, bude již stále ukazovat na tutéž proměnnou. V C++ rovněž nemůžeme deklarovat ukazatele na reference a pole referencí. Nelze také deklarovat reference na typ void (void&). Reference se nejčastěji používají při volání funkcí s parametry předávanými odkazem.int prom;
int &ref_prom = prom; //reference
int *uk_prom; //ukazatel
ref_prom = 20; //je to samé jako: prom=20;
uk_prom = &ref_prom; //je to samé jako: uk_prom=&prom;
Předávání parametrů funkcí
V jazyce C jsou dvě možnosti, jak předávat parametry funkcím:1. Volání hodnotou - předává se samotná proměnná a funkce si vytváří vlastní lokální kopii na zásobníku. Takový způsob není vhodný pro svou časovou a paměťovou náročnost u parametrů s větším datovým typem.
2. Jazyk C neumí předávat parametry odkazem, ale umožňuje předání adresy na skutečný parametr, které je pro větší datové struktury výhodnější než první způsob.
V jazyce C++, kromě výše uvedených variant, již existuje možnost předávání parametrů odkazem - raději funkce s parametry
volanými referencí.
Příklad:
void swap(int &a, int &b)
{
int pom;
pom=a;
a=b;
b=pom;
}
19
void main(void)
{
int X=10, Y=20;
swap(X, Y); // vymění se hodnoty proměnných X a Y
cout << "X je: " << X <<" Y je: " << Y << endl ;
}
Autor: Filip Koval