Rodrigo Strauss :: Blog
Mais explicações sobre copy constructors
Aquele post sobre copy constructors gerou para mim uma dúvida existencial: por que o compilador os gera automaticamente? Não é lá muito comum que os compiladores C++ gerem código.
Depois procurar no FAQ do Stroustrup e não encontrar, resolvi perguntar aos gurus do
comp.lang.c++.moderated. Se eles não soubessem, nem o próprio Stroustrup saberia, e eu continuaria até o fim dos meus dias com o peso da dúvida sobre os ombros. As respostas foram muito interessantes.
Em 11/04/2005 21:35, por Rodrigo Strauss





O livro The Design and Evolution of C++, do Stroustrup tem todas as dúvidas filosóficas do C++.
Infelizmente nunca li este livro, mas já vi referência para ele em vários lugares sempre quando se tem uma dúvida do tipo "porque c++ é assim".
O copy contructor é uma solução para compatibilidade com o C. Acho que ele se enquadra bem no C++ e faz todo sentido.
Li algumas respostas do comp.lang.c++.moderated.
Interessante que lá tinha um exemplo de algo que eu faço, que é inicialização de variáveis assim:
int i(0);
double d(0.0);
double d = double();
Para templates é útil também pois você pode não saber o valor default do tipo. Daí basta colocar TIPO();
template<class T>
class X {
T value;
X () : value(T()) {}
}
Este conceito falha no caso de enums, para compatibilidade com o C.
enum E { a = 1, b = 2 };
E e = E();
não fica como 1 e sim com 0.