minos5000
2008-06-17, 13:22:46
Hi,
ich soll gerade eine Anwendung für Symbian C++ schreiben habe aber bisher nur rudimentäre Erfahrung in C++. Bisher habe ich hauptsächlich mit Java gearbeitet. Beim Sichten von Beispielcode ist mir etwas aufgefallen bezüglich der Verwendung von Variablen die in der Header-Datei deklariert wurden.
Und zwar werden diese in einem Beispiel über Vererbungssyntax an den Konstruktor gehängt:
Header:
...
private:
InfoType iPhoneInfoType;
TInt iState; // State of the active object
CTelephony* iTelephony;
CTelephony::TPhoneIdV1 iPhoneId;
CTelephony::TSubscriberIdV1 iSubscriberId;
CTelephony::TNetworkInfoV1 iNetworkInfo;
CActiveSchedulerWait iActiveSchedulerWait;
TBuf<CTelephony::KPhoneSerialNumberSize>iIMEI;
TBuf<CTelephony::KIMSISize>iIMSI;
TUint iCellId;
TUint iLocationAreaCode;
};
Implementierung:
...
CSystemManager::CSystemManager() : CActive(EPriorityHigh), iPhoneInfoType(EHandsetIMEI), iState(EStart), iTelephony(NULL), iIMEI(0), iIMSI(0)
{
}
...
Aber in einem anderen Beispiel kommen nicht alle im Header deklarierten Variablen beim Konstruktor vor.
Header:
class CNetworkInfo : public CActive
{
...
private:
CTelephony* iTelephony;
CTelephony::TNetworkInfoV1 iNwInfo;
CTelephony::TNetworkInfoV1Pckg iNwInfoPckg;
MNetworkInfoObserver* iObserver;
};
Implementierung:
...
CNetworkInfo::CNetworkInfo() : CActive(EPriorityStandard), iNwInfoPckg(iNwInfo)
{
CActiveScheduler::Add(this);
}
...
Meine Frage ist nun, welche Bewandnis es damit hat, dass überhaupt Variablen beim Konstruktor auf diese Art und Weise angehängt werden und wie es möglich ist, dass in dem anderen Beispiel teilweise darauf verzichtet werden kann.
Ich habe diesbezüglich auch schon in ein paar C++ Büchern nachgeschlagen, aber keine passende Antwort gefunden.
vg
minos
ich soll gerade eine Anwendung für Symbian C++ schreiben habe aber bisher nur rudimentäre Erfahrung in C++. Bisher habe ich hauptsächlich mit Java gearbeitet. Beim Sichten von Beispielcode ist mir etwas aufgefallen bezüglich der Verwendung von Variablen die in der Header-Datei deklariert wurden.
Und zwar werden diese in einem Beispiel über Vererbungssyntax an den Konstruktor gehängt:
Header:
...
private:
InfoType iPhoneInfoType;
TInt iState; // State of the active object
CTelephony* iTelephony;
CTelephony::TPhoneIdV1 iPhoneId;
CTelephony::TSubscriberIdV1 iSubscriberId;
CTelephony::TNetworkInfoV1 iNetworkInfo;
CActiveSchedulerWait iActiveSchedulerWait;
TBuf<CTelephony::KPhoneSerialNumberSize>iIMEI;
TBuf<CTelephony::KIMSISize>iIMSI;
TUint iCellId;
TUint iLocationAreaCode;
};
Implementierung:
...
CSystemManager::CSystemManager() : CActive(EPriorityHigh), iPhoneInfoType(EHandsetIMEI), iState(EStart), iTelephony(NULL), iIMEI(0), iIMSI(0)
{
}
...
Aber in einem anderen Beispiel kommen nicht alle im Header deklarierten Variablen beim Konstruktor vor.
Header:
class CNetworkInfo : public CActive
{
...
private:
CTelephony* iTelephony;
CTelephony::TNetworkInfoV1 iNwInfo;
CTelephony::TNetworkInfoV1Pckg iNwInfoPckg;
MNetworkInfoObserver* iObserver;
};
Implementierung:
...
CNetworkInfo::CNetworkInfo() : CActive(EPriorityStandard), iNwInfoPckg(iNwInfo)
{
CActiveScheduler::Add(this);
}
...
Meine Frage ist nun, welche Bewandnis es damit hat, dass überhaupt Variablen beim Konstruktor auf diese Art und Weise angehängt werden und wie es möglich ist, dass in dem anderen Beispiel teilweise darauf verzichtet werden kann.
Ich habe diesbezüglich auch schon in ein paar C++ Büchern nachgeschlagen, aber keine passende Antwort gefunden.
vg
minos