Wat zijn helperfuncties in C++?

Ik probeerde helperfuncties in C++ te begrijpen uit The C++ Programming Language by Bjarne Stroustrup. Maar het boek heeft er niets over uitgelegd en het doel van het gebruik ervan in de lessen. Ik heb geprobeerd ernaar te zoeken op internet en vond dit. Ik heb de essentie ervan, maar nog steeds onduidelijk over wat het echte doel van helperfuncties is, wanneer moet ik ze gebruiken en wat zijn in het algemeen helperfuncties?


Antwoord 1, autoriteit 100%

“helperfunctie”is geen term die je in een standaard zou vinden, en het heeft ook geen exacte definitie… standaard vermeldt “helperklasse “of “helpersjabloon”enkele keren om naar een klasse te verwijzen, die niet bedoeld is om door eindgebruikers te worden geïnstantieerd, maar het biedt een nuttige functionaliteit die intern binnen een andere klasse wordt gebruikt.

Helperfuncties zijn (wat ik denk dat de meeste mensen bedoelen als ze het zeggen) meestal functies die een aantal nuttige functionaliteit bevatten die je gaat hergebruiken, hoogstwaarschijnlijk keer op keer. U kunt hulpfuncties maken die bedoeld zijn om voor veel verschillende doeleinden te worden gebruikt…

Een voorbeeld kan een conversiefunctie van welke aard dan ook zijn, bijvoorbeeld een functie die multi-byte gecodeerde std::stringconverteert naar std::wstring:

std::wstring s2ws(const std::string& str)
{
    int size_needed = MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), NULL, 0);
    std::wstring wstrTo( size_needed, 0 );
    MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), &wstrTo[0], size_needed);
    return wstrTo;
}

Antwoord 2, autoriteit 27%

Er is een goede definitie van een helperfunctie uit de CppCoreGuidline:

Een helperfunctie is een functie (meestal geleverd door de schrijver van een klasse) die geen directe toegang tot de representatie van de klasse nodig heeft, maar die toch wordt gezien als onderdeel van de nuttige interface naar de klasse. Door ze in dezelfde naamruimte als de klasse te plaatsen, wordt hun relatie met de klasse duidelijk en kunnen ze worden gevonden door argumentafhankelijke opzoeking.

Voor meer informatie kun je de paragraafraadplegen met een duidelijk voorbeeld, waarvan het bovenste aanhalingsteken is overgenomen.


Antwoord 3, autoriteit 3%

Een voorbeeld zou de invoervalidatiefunctie kunnen zijn die u in de gehele hoofdfunctie gaat hergebruiken. Laten we zeggen dat je een programma hebt dat naar de leeftijd van de gebruiker vraagt, aangezien leeftijd een geheel getal is > 0, moet u een aparte functie hebben die zorgt voor de “cin >> users_age;”. Als de invoer voldoet aan de voorwaarde, ga dan verder, of vraag de gebruiker anders om zijn leeftijd opnieuw in te voeren.

Dit is slechts een voorbeeld van een “helperfunctie”. Corrigeer me lezers als ik het mis heb. Bedankt!


Antwoord 4

“Helper-functies” worden beschreven in het boek van Bjarne Stroustrups, en ik las er gisteren net over. Volgens Stroustrup moet een goed ontwerp van een klasse het aantal functies dat een klasse implementeert tot een minimum beperken. Je wilt geen 50 functies in een klas hebben, volgens:
Strostrup. In plaats daarvan gebruik je “helperfuncties” die de klasseninterface gebruiken (roep de lidfuncties op). Ze zouden misschien (niet zeker van) kunnen worden gedefinieerd in een gedeelde naamruimte om betekenis te geven aan hun “relatie”. Je kunt de paragraaf in het boek vinden in hoofdstuk 9 paragraaf 9.7.5

Other episodes