Constructeur et type réel d'objet
Salut à tous,
considérons le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| struct A
{
A(){ cout << "A()" << endl; }
void f() { cout << "f()" << endl; }
};
int main(void)
{
A a();
a.f();
return 0;
} |
Si je commente la ligne 10 correspondant à l'appel de la méthode f, le code compile parfaitement.
1)Le message "A()" ne s'affiche pas, ainsi quel constructeur est appelé?, un constructeur par défaut généré automatiquement par le compilateur?
2)Si maintenant je décommente la ligne 10, le code ne compile plus. Le compilateur m'affiche l'erreur suivante :
request for member 'f' in 'a', which is of non-class type 'A()'
Le code est facilement corrigible, mais j'aimerais savoir quel est ce comportement? est ce prévu par la norme?