C

[C ++] error C2572: redefinir los parámetros predeterminados

Error C2572 Redefine Default Parameters

cacerola de pescahttps://blog.csdn.net/u013921430 Indique la fuente】

Prefacio

Encontré este error al depurar C2572: 'XXXX': redefinir los parámetros predeterminados A menudo, se debe a que los valores predeterminados se establecen para los parámetros en la declaración y definición de la función. Para modificar este error, solo necesita eliminar el valor predeterminado del parámetro en la definición de la función. (Nota: en lugar de eliminar los parámetros formales, se elimina el valor predeterminado). Por ejemplo, en el siguiente caso, el compilador informará un error

|_+_|

El código modificado es el siguiente, de esta manera el programa se ejecutará normalmente.



|_+_|

análisis del problema

Este error no es un gran problema, porque en el proceso de escritura del código, para evitar problemas, todos pegarán habitualmente la declaración de la función directamente en la definición de la función. En cuanto a por qué no puede darle al parámetro un valor predeterminado al mismo tiempo en la declaración y definición de la función, no he dado una explicación clara para algunos libros. Todo el mundo solo necesita recordar. (OS: ¿No es esto un análisis en absoluto?)



Tenía curiosidad por pensar en ello. ¿No puedo dar el valor predeterminado del parámetro formal en la declaración de la función, pero dar el valor predeterminado en la definición? Así que lo intenté de nuevo. La prueba se realizó bajo VS2013. Los resultados de la prueba también están operativos. Pero lo probé en otra situación y descubrí que no se podía ejecutar. En el siguiente caso, no es posible. Debido a que la función main () llama a la función func (), no hay un valor predeterminado para el parámetro formal de acuerdo con la declaración de la función, por lo que el valor del parámetro predeterminado no se puede usar al llamar a la función.



|_+_|

Extensión

Nuevamente, en una clase, ¿qué sucede si desea definir un constructor y establecer todos los parámetros formales en un constructor a sus valores predeterminados?

|_+_|

La respuesta es que lo convertiste en un constructor predeterminado.

|_+_|

¿Por qué se está convirtiendo en el constructor predeterminado? Echemos un vistazo al error anterior: debido a que el objeto NI no tiene parámetros de inicialización, debe llamar al constructor sin parámetros, que es el constructor predeterminado. En el segundo constructor, todos los parámetros tienen valores predeterminados, por lo que NI también puede llamarlo, por lo que, de hecho, también es el constructor predeterminado, solo que el constructor predeterminado también puede inicializar objetos con datos. Es por eso que ambos métodos son los constructores predeterminados definidos.



Entonces, hay dos formas de crear constructores predeterminados en C ++.

1) Defina un constructor sin parámetros

2) La definición de todos los parámetros tiene un constructor de valor predeterminado.

Hoy, según una pregunta, he revisado los otros dos contenidos. .

Terminado. .