Retezec krok 2 - definice členských funkcí
Zde definujeme členské funkce třídy Retezec a povíme si něco o inline funkcích
Otevřete nový soubor a zapište mu nějakou hlavičku a "inklůdujte" standardní hlavičkové soubory:
//definice třídy Retezec
//4.10.1998 Jan Dolinay
#include <string.h>
Vložte direktivu include s naším souborem RETEZ.H
#include "retez.h"
Definujte oba konstruktory - Všimněte si že do názvu členské funkce patří také název její třídy a dvě dvojtečky
Retezec::Retezec()
{
m_text[0] = '\0'; //jen
vyprázdníme řetězec
m_delka = 0; //a nastavíme nulovou délku
}
Retezec::Retezec(char* text)
{
strcpy(m_text,text);
m_delka = strlen(m_text);
}
Vidíte, že druhý konstruktor prostě zkopíruje předaný řetězec do členské proměnné a uloží jeho délku, zatímco první pouze nastavil výchozí hodnoty pro prázdný řetězec.
Definujte funkci GetText
char* Retezec::GetText()
{
return m_text;
}
Funkce GetText je tak jednoduchá, že by mohla být zapsána
přímo v deklaraci třídy v souboru RETEZ.H. Takovým funkcím
se říká inline a nejsou volány běžným (a zdlouhavým)
mechanizmem. Místo toho jsou jejich těla vkládána
překladačem přímo do zdrojového kódu podobně jako makra.
Pak by deklarace funkce v RETEZ.H vypadala takto:
char* GetText() { return
m_text; };
Vložením klíčového slova inline před názec funkce v souboru *.CPP
můžete donutit překladač aby s ní zacházel stejným
způsobem jako by byla zapsána přímo v deklaraci v souboru
*.H. Může to prý urychlit program, ale má to smysl jen u
krátkých funkcí, které neobsahují žádné cykly
(for,while,do). Protože jinakpřekladač stejně naše inline
ignoruje.
Uložte soubor pod názvem RETEZ.CPP
V dalším kroku vytvoříme program, ve kterém třídu Retezec vyzkoušíme.