Mi comprensión del encadenamiento de constructores es que, cuando hay más de un constructor en una clase (constructores sobrecargados), si uno de ellos intenta llamar a otro constructor, entonces este proceso se llama CONSTRUCTOR CHAINING, que no es compatible con C++. Recientemente me encontré con este párrafo, mientras que la lectura de material en línea .... Dice así ...Cadena de constructor en C++
Usted puede encontrarse en la situación en la que desea escribir una función miembro para volver a inicializar una clase de nuevo a los valores predeterminados. Como probablemente ya tiene un constructor que hace esto, puede sentirse tentado de intentar llamar al constructor desde su función de miembro. Como se mencionó, encadenar llamadas de constructor son ilegales en C++. Podría copiar el código del constructor en su función, lo que funcionaría, pero conduciría a un código duplicado. La mejor solución en este caso es mover el código del constructor a su nueva función y hacer que el constructor llame a su función para hacer el trabajo de inicialización de los datos.
¿Una función de miembro que llama al constructor también viene bajo encadenamiento de constructor? Por favor, arroje algo de luz sobre este tema en C++.
Yo diría que no, y no es apropiado para el artículo decir que el encadenamiento de constructores es ilegal, inmediatamente después de decir que alguna función miembro arbitraria (no necesariamente un constructor) podría pensar que quiere llamar a un constructor para reiniciar el valor. Pero quién sabe, no ha citado el artículo ni ha citado dónde describe el encadenamiento de constructores, por lo que tal vez lo esté usando en algún sentido inusual ya descrito en otro lugar. –
No es ilegal. Llamar a un constructor desde un miembro tiene el efecto de crear un objeto temporal al que se aplica la construcción, no el objeto 'este' desde el que realiza la llamada. –
@Amardeep: de acuerdo, sería más exacto decir que el encadenamiento de constructores es "imposible" en C++ 03, en lugar de "ilegal". Simplemente no hay sintaxis para describir hacerlo. Como dices, por la definición normal, llamar a un constructor no es en absoluto lo mismo que el encadenamiento del constructor. –