Ver Mensaje Individual
  #28 (permalink)  
Antiguo 16/04/2015, 08:45
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 3 meses
Puntos: 204
Respuesta: ¿Para qué necesito un Constructor? (Sí, novato inside XD).

Cita:
Iniciado por BramSt Ver Mensaje
Hasta aquí bien, pero es que luego te entiendo que no se hace punto p(), sino punto p, por ser una excepción que yo creí que ocurría en el caso de ser punto p un constructor, esto es, una llamada a una función.

Pero si es un objeto, es que no pintan ahí nada los paréntesis, ¿no?:
Si el objeto lo vas a crear usando el constructor por defecto no es necesario usar los paréntesis. Y esto es válido tanto para objetos alojados en la pila como para elementos creados con "new" (compilar sin optimizaciones):

Código C++:
Ver original
  1. #include <iostream>
  2.  
  3. struct POO
  4. {
  5.   POO( )
  6.   {
  7.     std::cout << "Constructor" << std::endl;
  8.   }
  9. };
  10.  
  11. int main( )
  12. {
  13.   POO p;
  14.   POO* p2 = new POO;
  15. }


Cita:
Iniciado por BramSt Ver Mensaje
Y no puede confundirse un punto p (2,6) con una llamada a función que retorna un punto?
Para evitar este tipo de confusiones, a partir del estándar C++11 se habilitan las llaves {} para inicializaciones: Punto p{2,6}

Cita:
Iniciado por vangodp Ver Mensaje
Pero mi duda es... ¿Si el constructor es por defecto es inline en teoria?
¿Y si no pongo inline en un constructor definido por mi ese no será inline?
Que el código del constructor sea inline o no es relativamente independiente de que lo implementes en la cabecera o de que lo etiquetes con "inline"... la mayor parte de las veces dependerá de lo que decida el compilador. ¿en base a qué? pues en base a la sencillez de su código, por lo que puede tener en cuenta cosas como:

  • Si el código tiene bucles
  • El número de líneas de la función
  • Cantidad de condicionales
  • Cantidad de returns
  • Algúno que se me olvide mencionar
Cuantos más altos sean estos números más dificil es que la función acabe siendo compilada como "inline".



Cita:
Iniciado por vangodp Ver Mensaje
Es que C++ tiene mil reglas... Pff Que jodio es jajaja
La mayor parte de las reglas de C++ sólo son aplicables en casos muy concretos... siguiendo unas costumbres sanas a la hora de diseñar la arquitectura del software y a la hora de escribir el código se pueden conseguir muchos más beneficios que aprovechando todas las "triquiñuelas" que te permite C++.

Última edición por eferion; 16/04/2015 a las 08:51