Czy w klasach używać metod z interfejsu publicznego czy tego co się za nimi kryje

0

Witam.

Piszę obecnie (dla przyjemności, dla rozwoju i z kilku innych powodów) własną implementaję klasy std::vector.
W środku mam np:

public:
size_type size();
size_type capacity();

oraz

 
private:
size_type _size;
size_type _capacity;

Czego użylibyście wewnętrznie? _size szybsze, poza tym wewnętrznie więc można czy size() bardziej eleganckie, elastyczne, ale wolniejsze.

To samo się tyczy wszelkich pętli wewnętrznych.

for (size_type int =0; i<size...) 

czy iteratory wewnętrzne? Iteratory powstały głównie po to, żeby uogólnić wszelkie przetważanie na zewnątrz nie ważne czy vector czy lista. Ale wewnętrznie?

Za wikipedią: Hermetyzacja to ukrywanie implementacji. Ale przed sobą?

Pozdrawiam.

0

Użyj to tego poprzednio stworzonej funkcji. Bo po primo, jeśli jej rola będzie czymś więcej niż tylko zwracaniem wartości wtedy sama wartość nie będzie równoznaczna wartości zwracanej przez funkcję. Po duo, kompilator przy "dobrym" kodzie zoptymalizuje funkcje (czyt. inline function), więc nie musisz się martwić o taką błahostkę.

0

Patrząc np. na implementację vectora przez SGI, to nie mają tam oporów przed używaniem size() we własnych metodach: https://www.sgi.com/tech/stl/stl_vector.h
Używanie metod ma tę zaletę, że jak kiedyś postanowisz zmienić nazwę zmiennej, to mniej zmian w kodzie będzie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1