Imagine que tengo una clase C ++ Foo y una barra de clases que debe crearse con un constructor en el que se pasa un puntero Foo, y este puntero debe permanecer inmutable en el ciclo de vida de la instancia de Bar. ¿Cuál es la forma correcta de hacerlo? De hecho, pensé que podría […]
class C { public: C() : arr({1,2,3}) //doesn’t compile {} /* C() : arr{1,2,3} //doesn’t compile either {} */ private: int arr[3]; }; Creo que la razón es que las matrices solo se pueden inicializar con la syntax = , es decir: int arr[3] = {1,3,4}; Preguntas ¿Cómo puedo hacer lo que quiero hacer (es […]
¿Qué hace el operador de dos puntos (“:”) en este constructor? Es equivalente a MyClass(m_classID = -1, m_userdata = 0); ? class MyClass { public: MyClass() : m_classID(-1), m_userdata(0) { } int m_classID; void *m_userdata; };
Recientemente, he visto un ejemplo como el siguiente: #include class Foo { public: int bar; Foo(int num): bar(num) {}; }; int main(void) { std::cout << Foo(42).bar << std::endl; return 0; } ¿Qué significa esto extraño : bar(num) ? De alguna manera parece inicializar la variable miembro, pero nunca he visto esta syntax antes. Parece una […]