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.