Preguntas C++

¿La palabra clave ‘mutable’ tiene algún otro propósito que no sea permitir que una función de miembro const modifique un miembro de datos?

Robar Hace un tiempo, encontré un código que marcaba un miembro de datos de una clase con el mutable palabra clave. Por lo que puedo ver, simplemente le permite modificar un miembro en un const-método de miembro calificado: class Foo { private: mutable bool done_; public: void doSomething() const { …; done_ = true; } …

¿La palabra clave ‘mutable’ tiene algún otro propósito que no sea permitir que una función de miembro const modifique un miembro de datos? Leer más »

¿Cuál es el orden de evaluación en una lista de inicializadores de miembros?

gancho Tengo un constructor que toma algunos argumentos. Supuse que se inicializaron en el orden indicado, pero en un caso, parece que se inicializaron al revés, lo que resultó en un aborto. Cuando invertí los argumentos, el programa dejó de abortar. A continuación se muestra un ejemplo de la sintaxis que estoy usando. a_ debe …

¿Cuál es el orden de evaluación en una lista de inicializadores de miembros? Leer más »

¿Por qué debería preferir usar listas de inicializadores de miembros?

oz10 Soy partidario de usar listas de inicializadores de miembros para mis constructores, pero hace mucho tiempo que olvidé las razones detrás de esto. ¿Utiliza listas de inicializadores de miembros en sus constructores? Si es así, ¿por qué? ¿Si no, porque no? Razones enumeradas aquí… https://www.geeksforgeeks.org/when-do-we-use-initializer-list-in-c/ – u8it 11 de junio de 2018 a las …

¿Por qué debería preferir usar listas de inicializadores de miembros? Leer más »

Uso de miembro de datos en la lista de captura lambda dentro de una función miembro

Vivek El siguiente código se compila con gcc 4.5.1 pero no con VS2010 SP1: #include <iostream> #include <vector> #include <map> #include <utility> #include <set> #include <algorithm> using namespace std; class puzzle { vector<vector<int>> grid; map<int,set<int>> groups; public: int member_function(); }; int puzzle::member_function() { int i; for_each(groups.cbegin(), groups.cend(), [grid, &i](pair<int,set<int>> group) { i++; cout << i …

Uso de miembro de datos en la lista de captura lambda dentro de una función miembro Leer más »

¿Por qué usar prefijos como m_ en miembros de datos en clases de C++?

VoidPointer Una gran cantidad de código C++ usa convenciones sintácticas para marcar miembros de datos. Los ejemplos comunes incluyen m_memberName para miembros públicos (donde los miembros públicos se usan en absoluto) _memberName para miembros privados o todos los miembros Otros tratan de hacer cumplir usando this->member cada vez que se utiliza un miembro de datos. …

¿Por qué usar prefijos como m_ en miembros de datos en clases de C++? Leer más »

usando una plantilla externa (C++ 11) para evitar la creación de instancias

codigokiddy Figura 1: plantillas de funciones TemplHeader.h template<typename T> void f(); TemplCpp.cpp template<typename T> void f(){ //… } //explicit instantation template void f<T>(); Principal.cpp #include “TemplHeader.h” extern template void f<T>(); //is this correct? int main() { f<char>(); return 0; } ¿Es esta la forma correcta de usar extern templateo uso esta palabra clave solo para …

usando una plantilla externa (C++ 11) para evitar la creación de instancias Leer más »

¿Cómo puedo inicializar miembros de datos de la clase C++ en el constructor?

Falacia lógica Tengo una clase que tiene un par de miembros de datos de tipo de clase. No quiero que se llame a los constructores de estos miembros cuando se declaren, por lo que estoy tratando de aferrarme a un puntero al objeto explícitamente. Pensé que tal vez podría hacer lo siguiente, donde el constructor …

¿Cómo puedo inicializar miembros de datos de la clase C++ en el constructor? Leer más »