registro de aprendizaje de c ++ 20201025
Puede que no haya necesariamente un objeto si hay espacio, y debe haber espacio si hay un objeto.
Ejemplo:
class Empty
{
public:
Empty(const Empty &e) {
}
};
int main()
{
Empty x;
Empty y(x);
}
El objeto vacío no tiene miembros, pero el tamaño del objeto instanciado x es 1 byte, donde un byte representa un marcador de posición
El constructor en c ++ puede tomar valores predeterminados.
Cuando el miembro es una matriz, el constructor con parámetros debe asignarse bit a bit
class Object
{
private:
int ar[5];
public:
Object(int x = 0)
{
for(int i = 0;i < 5;i++)
{
ar[i] = 0;
}
}
};
int main()
{
Object a(10);
Object b(a);
Object x;
}
char * p = new char arr [10]
delete [] p Al
abrir un espacio continuo, también necesitamos liberar el espacio continuo
Copia superficial:
la copia superficial del puntero es para copiar la dirección del puntero. Si dos punteros apuntan a la misma dirección,
1. Uno de los punteros libera el espacio señalado y el otro puntero libera el espacio señalado por el puntero, el sistema se bloqueará (versión secundaria)
2. Si el espacio señalado no se libera antes de modificar la dirección señalada por el puntero, se producirá una pérdida de memoria
Copia profunda: la copia
profunda opera sobre los datos en sí. Si simplemente copia el puntero, pueden surgir algunos problemas.
Pequeño punto:
el parámetro de la función strlen () no puede ser nulo
. El tamaño del espacio del puntero es 4.
Si la variable referenciada puede devolverse depende de la vida útil de la variable. Si la vida útil se ve afectada por la función, no puede ser usado (será destruido)