Razonemos por analogía. Si define una función
void doSomething(A [137]) {
}
entonces C ++ lo trata como si realmente hubieras escrito
void doSomething(A *) {
}
En otras palabras, hay algunos tipos donde, si los usa como parámetro de una función, C ++ los reemplazará automáticamente con un tipo diferente, el tipo que obtendría al descomponer el tipo.
En su caso, A()
es el tipo de función que no toma argumentos y devuelve un A
. Si tiene una función C ++ que toma un A()
como argumento, C ++ tendrá la función tomar como entrada an A (*)()
, un puntero a una función que no toma argumentos y devuelve un A
. La razón de esto es que no puede tener un objeto de tipo A()
en C ++, aunque puede tener un puntero a un A()
.
A()
fueA
el constructor?