C'est la définition d'un constructeur - il n'y a pas d'espaces de noms.
NetworkManager :: NetworkManager() : m_Thread(0), m_Continue(true), m_Init(false){
}
Le constructeur est pour une classe appelée NetworkManager, et il initialise ses membres en utilisant une liste d'initialisation. Qu'est-ce qui se passe est conceptuellement (sinon complètement avec précision):
NetworkManager :: NetworkManager() {
create "empty" NetWorkManager object
initialise its m_Thread with zero
set its m_Continue to be true
set its m_Init to be false
}
Vous utilisez alors le constructeur pour créer un objet entièrement initialisés:
NetworkManager manager;
Initialiser comme celui-ci est l'affectation préféré sur dans le corps du constructeur pour plusieurs raisons:
- de nombreux types ne supportent pas l'affectation
- il est généralement plus efficace
- il supprime la possibilité d'objets non initialisées dans le reste du code constructeur
Quel est l'avantage d'utiliser ce lieu de mettre ceux dans le corps du constructeur? – codereviewanskquestions
@LCYSoft: Parce que lorsque vous les mettez dans le corps du constructeur, les variables membres seront initialisées par défaut, puis les valeurs leur seront assignées. Pour certains types de données, cela est moins efficace que de simplement les initialiser immédiatement. Plus important encore, il y a quelques types de données où vous devez * required * utiliser la syntaxe 'ctor-initializer' pour l'initialiser (par exemple, quand vous devez passer des arguments aux constructeurs de variables membres, membres const, etc) . –
Merci beaucoup! – codereviewanskquestions