Newbiefrage: Deklarationen von Funktionen (in Klassen)
-
Moin,
ich hab da ein paar simple Fragen. Wenn ich eine Klasse hab (MFC) und dort paar Funktionen im header deklariere gibt es paar Sachen die mir nix Sagen.
Das wären folgene:virtual /* bedeutet das, dass man die Funktin überschreiben muß, wenn man aus dieser Klasser erbt? */ afx_msg /* soweit ich mir das denke, bedeute es, dads es sich um eine Funtkion handelt die auf Messages reagiert. Aber es funktioniert auch ohne oder? */ static /* sagt mir schon was aber was soll eine static Funtkion sein. Ist das vieleicht eine Funktion die ich durch CKlassenname::MeineStaticfunktion benutzen kann */ DECLARE_MESSAGE_MAP() // heißt sicher das ich auf Messages reagiere oder? // btw was heißt dies: #pragma oncewürde mich über Antworten freuen.
-
!!!!!!!!!MSDN!!!!!!!!!
virtual
-------Heißt, dass die Funktion überschrieben werden kann. Ist es eine pure-virtual, z.B.
class myClass { virtual HRESULT Draw() = 0; // pure virtual };dann MUSS sie überschrieben werden, sofern Du Deine abgeleitete Klasse instantiieren willst
afx_msg
-------Steht vor jeder Klassenfunktion der MFC, die eine Message bearbeitet, Funktion -> unwichtig
static
------Richtig getippt.
DECLARE_MESSAGE_MAP()
---------------------
Deklariert die Nachrichten, auf die diese Klasse reagiert. Editiert der Klassen-Assi automatisch.#pragma once
------------Aus MSDN:
Gibt an, daß die Datei, in der das Pragma sich befindet, nur einmal vom Compiler in einem Build eingeschlossen (geöffnet) wird. Eine häufige Verwendung für dieses Pragma ist die folgende:
//header.h #pragma once // Hier folgt Ihr C- oder C++-Code:
-
Also ersetzt
//header.h #pragma once // Hier folgt Ihr C- oder C++-Code#ifndef MYCLASS_H #define MYCLASS_H // ...header #endif?¿?