Maison >développement back-end >C++ >Quelle est la bonne façon de déléguer des constructeurs en C ?

Quelle est la bonne façon de déléguer des constructeurs en C ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-20 15:34:19217parcourir

What's the Correct Way to Delegate Constructors in C  ?

Déléguer des constructeurs

Déléguer un constructeur implique d'appeler un autre constructeur depuis le corps du constructeur pour éviter l'exécution de code redondante.

Approche correcte

Le deuxième bloc de code présenté est l'implémentation correcte pour délégation du constructeur en C . Il utilise la liste d'initialisation du constructeur :

Bitmap::Bitmap(WORD ResourceID) : Bitmap((HBITMAP)LoadImage(GetModuleHandle(NULL), MAKEINTRESOURCE(ResourceID), IMAGE_BITMAP, 0, 0, LR_SHARED))
{
}

Liste d'initialisation

La liste d'initialisation permet d'initialiser directement un objet lors de la construction. En passant la valeur HBITMAP au constructeur Bitmap(HBITMAP) dans la liste d'initialisation, vous déléguez la construction à l'autre constructeur.

Approche incorrecte

Le premier bloc de code tente de déléguer en utilisant :

Bitmap(BMP);

Cependant, cela crée un objet Bitmap temporaire et ne délègue pas à l'existant constructeur.

Portée de la délégation

Notez que la délégation du constructeur ne peut se produire que dans la liste d'initialisation du constructeur et non dans le corps du constructeur. Son utilisation dans le corps conduirait à une construction récursive, ce qui n'est pas autorisé en C .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn