...
das is kein direkter konstruktoraufruf. auch wenn es so aussehen mag...
in dem fall wird zunächst der entsprechende operator new (der bitte nicht mit dem new operator zu verwechseln ist) verwendet um speicher zu allokieren. danach wird ein objekt vom angegebenen typ mit den angegebenen parametern im vom operator new gelieferten speicher konstruiert (das implementiert aber der compiler, und der verwendet dazu natürlich den entsprechenden konstruktor).
wie gesagt,
rein technisch gesehen (der sprachdefinition nach) ist das kein direkter konstruktoraufruf. du kannst einen konstruktor in C++ nicht direkt aufrufen wie z.b. eine normale methode (schon allein weil er keinen namen hat). indirekt (z.b. über new oder einen ausdruck der ein entsprechendes temporäres objekt erzeugt, etc.) ist das natürlich möglich.
dazu halte dir vielleicht folgendes beispiel vor augen:
|
C-/C++-Quelltext
|
1
2
|
int* a = new int;
int* b = new int();
|
es geht auch ohne () und zwischen der variante mit den () und der ohne ist betreffend der art der initialisierung ein kleiner aber feiner unterschied.
prinzipiell hast du natürlich recht. und die syntax ist auch sicherlich nicht zufällig so gewählt