Me sorprendió que esto no apareciera en mis resultados de búsqueda, pensé que alguien habría preguntado esto antes, dada la utilidad de la semántica de movimientos en C ++ 11: ¿Cuándo tengo que (o es una buena idea para mí) hacer una clase no móvil en C ++ 11? (Razones distintas de los problemas de […]
Los paréntesis en C ++ se usan en muchos lugares: por ejemplo, en llamadas a funciones y expresiones de agrupación para anular la precedencia del operador. Además de los paréntesis extra ilegales (como las listas de argumentos de llamadas a funciones), una regla general -pero no absoluta- de C ++ es que los paréntesis adicionales […]
Me gustaría asegurar que mi clase RAII siempre esté asignada en la stack. ¿Cómo evito que se asigne una clase a través del operador ‘nuevo’?
Hay 4 operadores en C ++ que pueden estar sobrecargados pero no pueden sobrecargarse como funciones independientes (también conocidas como no miembros, independientes). Estos operadores son: operator = operator () operator -> operator [] Este hilo explica perfectamente la razón detrás de prohibir operator = ser una función no miembro. Alguna idea sobre los otros […]
Esto no se comstack en C ++: class A { }; class B : public A { }; … A *a = new B(); B *b = dynamic_cast(a);
En C ++, no puedo pensar en un caso en el que me gustaría heredar privado / protegido de una clase base: class Base; class Derived1 : private Base; class Derived2 : protected Base; ¿Es realmente útil?
Si declaro un objeto envuelto en un puntero compartido: std::shared_ptr myClassObject(new myClass()); entonces quería pasarlo como argumento a un método: DoSomething(myClassObject); //the called method void DoSomething(std::shared_ptr arg1) { arg1->someField = 4; } ¿Lo anterior simplemente incrementa el recuento de referencias de shared_pt y todo está bien? ¿O deja un puntero colgando? ¿Todavía se supone que […]
¿Qué debería incluir en los progtwigs C ++, stdio.h o cstdio ? ¿y por qué? ¿Por qué dos archivos de encabezado que proporcionan la misma funcionalidad? ¿Qué dice la norma con respecto a esto? ¿Cómo debería incluir otros encabezados similares? ¿Existe alguna regla base que deba seguir?
std::list lst; //…. Node * node = /* get from somewhere pointer on my node */; lst.remove(node); ¿Std :: list :: remove method call destructor (y memoria libre) de cada elemento eliminado? Si es así, ¿cómo puedo evitarlo?
Tenía el siguiente código: #include struct T { int a, b, c; }; int main() { T t = {0}; std::cout << ta << ',' << tb << ',' << tc << '\n'; } Salida : 0,0,0 Después de muchos años de que este código funcionara felizmente en un entorno de producción crítico, cumpliendo una […]