Lo que quiere hacer no es compatible nartually por C++: no se puede tener medio constructor por defecto.
Pero lo que quiere lograr que se puede hacer por el pequeño truco a continuación:
tenga en cuenta esta pequeña demostración es un listado de defectos lote (pérdida de memoria, etc.), por lo que es sólo para demostración de la solución tentativa única:
//class A hasa large number date members(but all can take advantage of default
//copy constructor
struct A{
A(int i):a(i){}
int a;
//much more data memberS can use default copy constructor all in class A
};
//class B is simply wrapper for class A
//so class B can use the default constructor of A
//while just write copy constructor for a raw pointer in it's copy constructor
//I think this is what OP want ?
struct B
{
B(int i,int j):m_a(i),m_b(new int(j)){}
B(const B & rval):
m_a(rval.m_a),
m_b(new int(*rval.m_b))
{
}
A m_a;
int * m_b;
};
int main()
{
B c(2,3); // a=2, *m_b=3
B d(c); //after copy constructor, a=2, *m_b=3
}
este constructor de copia por defecto no es trivial – Benoit
¿Por qué necesita esto? ¿No puedes cambiar la clase? –
Es solo que tengo una clase bastante grande con solo un puntero (y no puedo usar punteros inteligentes), así que necesito escribir un constructor de copia para él, pero la mayoría del constructor de copia estaría haciendo lo que el constructor de copia predeterminado habría hecho –