ser - C++-¿Qué está haciendo esto si el constructor es privado?
manual de programacion android pdf (4)
En el siguiente código, ¿por qué el compilador no se queja por mClass2?
class CMyClass{
private:
CMyClass(){}
};
void TestMethod(){
CMyClass mClass1; //Fails.
CMyClass mClass2(); //Works.
}
El segundo es una declaración de función.
Las personas deberían pasar a la inicialización de sintaxis uniforme en C ++ 0x / C ++ 11 usando los corchetes {} en su lugar, lo cual elimina este problema.
Clase C{};
Porque acaba de declarar una función mClass2
de cero argumentos que devuelve un CMyClass
. Esa es una opción válida ya que podría haber, por ejemplo, una instancia de static CMyClass
que esa función tiene acceso. Tenga en cuenta que CMyClass
todavía tiene un constructor de copia pública.
(Para convencerse a sí mismo, compile este módulo para el ensamblador y observe que al comentar la línea CMyClass mClass2();
produce el mismo resultado).
Porque está declarando una función y no llamando al constructor como piensas.
Esto se llama como el Pars más irritante en c ++.
CMyClass mClass2();
declara una función mClass2()
que no toma ningún parámetro y devuelve CMyClass