registro de aprendizagem c ++ 20201025
Pode não haver necessariamente um objeto se houver espaço e deve haver espaço se houver um objeto.
Exemplo:
class Empty
{
public:
Empty(const Empty &e) {
}
};
int main()
{
Empty x;
Empty y(x);
}
O objeto Vazio não tem membros, mas o tamanho do objeto instanciado x é de 1 byte, onde um byte representa um espaço reservado
O construtor em c ++ pode assumir valores padrão.
Quando o membro é uma matriz, o construtor com parâmetros precisa ser atribuído 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 Ao
abrir o espaço contínuo, também precisamos liberar o espaço contínuo
Cópia
rasa: a cópia rasa do ponteiro serve para copiar o endereço do ponteiro. Se dois ponteiros apontam para o mesmo endereço,
1. Um dos ponteiros libera o espaço apontado e o outro libera o espaço apontado pelo ponteiro, o sistema irá travar (liberação secundária)
2. Se o espaço apontado não for liberado antes de modificar o endereço apontado pelo ponteiro, isso causará um vazamento de memória
Cópia profunda: a cópia
profunda opera nos próprios dados. Se você simplesmente copiar o ponteiro, alguns problemas podem ocorrer
Pequeno ponto:
O parâmetro da função strlen () não pode ser nulo
. O tamanho do espaço do ponteiro é 4.
Se a variável referenciada pode ser retornada depende do tempo de vida da variável. Se o tempo de vida for afetado pela função, ele não pode ser usado (será destruído)