Stack Overflow en español Asked by Federico Choy on August 26, 2021
¿ Los corchetes { ... }
representan lo mismo que el operador de asignación =
?
Si la respuesta es si, ¿Cuando debería usarlos?
Si la respuesta es no, ¿ Que representan ?
Por ejemplo, en este código:
#include <iostream>
int main()
{
int &&rref{ 5 }; //¿que representan los corchetes?
rref = 10;
std::cout << rref << 'n';
return 0;
}
Los corchetes
{ ... }
representan lo mismo que=
?
No.
El tema de la inicialización en C++ es bastante amplio, como podemos observar en su documentación (en inglés):
Value initialization
Esta es la inicialización realizada cuando una variable se construye con un inicializador vacío.
Clase instancia{ };
Clase{ };
new Clase{ };
Direct initialization
Inicializa un objeto a partir de un conjunto explícito de argumentos de constructor.
Clase instancie { arg };
List initialization
Inicializa un objeto desde una lista-de-inicialización.
Clase instancia { arg1, arg2, ... };
Clase { arg1, arg2, ... };
new Clase { arg1, arg2, ... };
Clase { Clase variable-miembro { arg1, arg2, ... }; };
Clase instance = { arg1, arg2, ... };
función( { arg1, arg2, ... } );
return { arg1, arg2, ... };
instancia[ { arg1, arg2, ... } ];
instancia = { arg1, arg2, ... };
Clase( { arg1, arg2, ... } );
Clase { Clase variable-miembro = { arg1, arg2, ... }; };
Aggregate initialization (ver aquí)
Inicializa un agregado desde una lista-de-inicialización.
Clase instancia = { arg1, arg2, ... };
Clase instance { arg1, arg2, ... };
Clase instancia = { .designator = arg1 , .designator { arg2 } ... }; (C++20)
Clase instancia { .designator = arg1 , .designator { arg2 } ... }; (C++20)
Clase instancia( arg1, arg2, ... ); (c++20)
Como habrás observado, hay distintas formas de inicialización que comparten sintaxis; el empleo de una u otra es automático por parte del compilador, y depende del tipo de la instancia a inicializar. Es un tema bastante extenso.
En el código que muestras, estás declarando una variable rref
como una referencia de lado derecho, y el compilador, debido al tipo utilizado (int
) la está inicializando utilizando la Direct initialization
.
Correct answer by Trauma on August 26, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP