En C ++, cada miembro y base de cada clase se inicializa completamente antes de la llave de apertura del constructor. El cuerpo del constructor es para verificaciones y acciones posteriores a la construcción, como establecer una invariante. Lo que trató de hacer después de la llave fue asignar a una variable ya inicializada. Y para las matrices de estilo C desnudas, el operador de asignación incorporado no funciona por razones de compatibilidad con versiones anteriores.
Hay dos formas estándar de inicializar un miembro de una clase (no importa si se trata de una matriz, excepto que antes de C ++ 11 ninguno de los métodos funcionaba para un miembro de una matriz desnuda):
1. inicializador de miembro predeterminado:
- ¿Cuál es la forma más eficiente de verificar si un elemento es parte de un conjunto?
- ¿Es mejor hacer InterviewBit ahora (actualmente estoy en mi quinto semestre) o hacer SPOJ ahora y luego hacer InterviewBit solo 3 o 4 meses antes de las entrevistas? Solo conozco algunas estructuras de datos y algoritmos básicos. He hecho 40 problemas en SPOJ.
- ¿Cómo demostramos que el algoritmo de codificación de Huffman es óptimo?
- Cómo escribir un validador de sangría de Python
- ¿Cuáles son las complejidades temporales del montón?
libros de clase
{
std :: string title [4] = {“book1”, “book2”, “book3”, “book4”};
// no se necesita ningún constructor
};
demo: Coliru Viewer
2. inicializador de miembro en un constructor:
libros de clase
{
std :: título de cadena [4];
público:
libros (): título {“libro1”, “libro2”, “libro3”, “libro4”}
{
// nada que hacer aquí
}
};
demo: Coliru Viewer