2011-02-08 27 views
16

¿A cuál de los siguientes se llama el constructor de myClass?¿Cuándo se llama al constructor?

1. myClass class1; 
2. myClass* class1; 
3. myClass* class1 = new myClass; 

Muchas gracias

+5

¿Esto necesita una etiqueta de tarea? – user535617

+5

@ user535617 - O la etiqueta de interrogación de la entrevista ... –

+0

Depende de qué clase de myClass. –

Respuesta

29
  1. Sí - constructor por defecto, instancia creada en la pila
  2. Sin
  3. Sí - por defecto constructor, instancia creada en el montón
1

1 y 3 , porque en ellos creas un objeto myClass.

1

El constructor se llama en los casos 1 y 3 cuando se crea una instancia de una clase. El otro (2) solo declara un puntero.

4

Tanto en el n. ° 1 como en el n. ° 3, ya que está creando una instancia del objeto. En el n. ° 2 simplemente declaras un puntero que no apunta a una instancia.

4
  1. La declaración instataría un objeto en la pila, llame a c'tor.
  2. Define solo una variable de puntero en la pila, no se llama a ningún constructor.
  3. El nuevo operador crearía un objeto en la tienda libre (normalmente el montón) y llamaría a c'tor.

Pero este código no instanciará ningún objeto, ya que no compila. ;-) Prueba con esto:

myClass class1; 
myClass* class2; 
myClass* class3 = new myClass; 
  • clase 1 es una variable local (en la pila), constructor de llamada.
  • clase 2 es un puntero, no se llama a ningún constructor.
  • clase 3 es un puntero, se llama al constructor, cuando se ejecuta nuevo.
+0

Has cambiado 2. y 3. – DarkDust

+0

@DarkDust: Ouch, cierto que eres. – harper

Cuestiones relacionadas