1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Construtores em c++

Discussão em 'Programação' iniciada por jorijo, 29 de Dezembro de 2008. (Respostas: 6; Visualizações: 888)

  1. jorijo

    jorijo Power Member

    Boas!!

    Gostaria de saber que critérios posso usar para definir quantos construtores de uma classe devo ter... já vi projectos em que são definidos vários, do tipo:

    cliente( string nome )
    cliente( string nome, string user )
    cliente( string nome, string user, string pass )

    e outros em que definem apenas o ultimo.

    desde já obrigado
     
  2. OubeLa

    OubeLa Power Member

    Podes ter os que precisares. Por exemplo, podes precisar de um construtor sem parâmetros, e depois mais tarde fazes o setNome e o setPassword. Mas noutra situação pode-te dar mais jeito ter esse com 3 argumentos. O que eu faço normalmente é ter sempre pelo menos dois, um sem argumentos, e outro como me der mais jeito.
     
  3. jorijo

    jorijo Power Member

    ok... podemos definir conforme as nossas necessidades.

    obrigado
     
  4. OubeLa

    OubeLa Power Member

    Sim, em principio...não creio que exista alguma "norma".
     
  5. IComeFromBehind

    IComeFromBehind Power Member

    É conveniente definires sempre um construtor por defeito. Se quiseres usar objectos da tua classe directamente em containers STL é melhor definires também um construtor de cópia e o operador de atribuição, a menos que queiras experimentar comportamentos estranhos.
     
  6. jorijo

    jorijo Power Member

    a que comportamentos estranhos te referes?
     
  7. IComeFromBehind

    IComeFromBehind Power Member

    Se não tiveres um construtor de cópia quando o container tenta fazer uma cópia obtens uma linda Excepção. Se tiveres definido um construtor o compilador não te dá o construtor de cópia por defeito e o programa explode, caso contrário o programa usa o construtor de cópia criado por defeito pelo compilador que pode ou não satizfazer as tuas necessidades, dependendo da gestão de memória que quiseres fazer, da profundidade das cópias que quiseres fazer etc etc...
     

Partilhar esta Página