Pro vaši informaci. V C++ nejsou objekty v pravém slova smyslu... to se jen všichni OOP programátoři dopouští zkratky. Správně by se mělo říkat "instance třídy". V C++ zdrojáku nemáme objekty, ale třídy. "class". Objektem se rozumí obecně cokoliv. Objektem totiž i třída, struktura, proměnná, objektem jsi ty, já, objektem je tahle diskuze. Pokud mluvíme o objektech, myslí se tím, že něco jako objekt vystupuje, nějak se chová, nějak s ním komunikujeme. Příklad s GStringem je přesně příklad objektu, protože to jako objekt vystupuje, chová se a dokonce hodně připomíná instanci třídy v C++. Prostě je to objekt. Objekt je prostě to nejobecnější co v programu vystupuje.
Ale nenechte se zmást, program C++ nemá objekty. Program má třídy a ve spuštěném programu napsaným v C++ také defacto nejsou objekty, tam jsou registry, paměť, proměnné, kód, instrukce... žádné objekty. Objekty tomu říkáme my, je to flujdum, virtuální záležitost, věc dohody mezi programátory.
Takže neplést. Žádné objekty, C++ má třídy a instance třídy. Jsou to speciální objekty vzniklé instanciováním třídy. Mimochodem, na obecnější úrovni stejně tak fungují objekty jako instance šablon, to jsou třídy. Instance šablon vedoucí na strukturu jsou taky objekty. V generice totiž velice často pracujete s objekty jako s instancemi šablon. Chová se to jako objekt, má to své rozhraní, má to svůj vyhrazení prostor, způsob vzniku a zániku. Dokonce i instanciací šablony může vzniknou šablona... a to je taky objekt
instance struktury GString je objekt... Máte pravdu, není to instance třídy ... ale je to stále objekt.
To jen proto, aby jsme si srovnali terminologii. Nicméně to co se Sten a Já snažíme vám vysvětli tak je to, že C++ se člověk nenaučí tím, že si našprtá syntaxi.