Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich Konstruktoren in C delegieren, um Codeduplizierung zu vermeiden?

Wie kann ich Konstruktoren in C delegieren, um Codeduplizierung zu vermeiden?

DDD
DDDOriginal
2024-11-22 06:40:14148Durchsuche

How Can I Delegate Constructors in C   to Avoid Code Duplication?

Konstruktoren in C delegieren

Beim Umgang mit mehreren Konstruktoren in einer C-Klasse kann es vorkommen, dass derselbe Code über alle Konstruktoren hinweg wiederholt wird. Um diesen Prozess zu optimieren, bietet C die Möglichkeit, Konstruktoraufrufe zu delegieren.

In Ihrem Szenario versuchen Sie, den Bitmap(HBITMAP)-Konstruktor vom Bitmap(WORD)-Konstruktor aus aufzurufen. Während Ihr erster Ansatz eine temporäre Bitmap erstellt und damit den anderen Konstruktor aufruft, verwendet die richtige Syntax für die Konstruktordelegierung die Konstruktor-Initialisierungsliste.

Der folgende Code demonstriert den richtigen Ansatz:

Bitmap::Bitmap(HBITMAP Bmp)
{
    // Construct some bitmap stuff..
}

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

Durch Platzieren des Konstruktordelegierungsaufrufs in der Initialisierungsliste stellen Sie sicher, dass der Bitmap(HBITMAP)-Konstruktor vor allen anderen Anweisungen im Bitmap(WORD) aufgerufen wird. Konstrukteur. Dadurch können Sie den gemeinsamen Code wiederverwenden, während Sie das Bitmap-Objekt mit unterschiedlichen Parametern initialisieren.

Das obige ist der detaillierte Inhalt vonWie kann ich Konstruktoren in C delegieren, um Codeduplizierung zu vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn