construtores gerados pelo compilador [duplicado]

Esta pergunta já tem uma resposta aqui:

Condições para geração automática de operador padrão / copiar / mover e copiar / mover atribuição? 3 respostas

Esta é apenas uma pergunta rápida para entender corretamente o que acontece quando você cria uma classe com um construtor como este:

class A
{
  public:
    A() {}
};

Eu sei que nenhum construtor padrão é gerado, uma vez que já está definido, mas são construtores de cópia e atribuição gerados pelo compilador ou, em outras palavras, preciso declarar um construtor de cópia privada e um operador de atribuição privada para impedir que isso aconteça?

class A
{
  private:
    // needed to prevent automatic generation?
    A( const A& );
    A& operator=( const A& );
  public:
    A() {}
};

questionAnswers(3)

yourAnswerToTheQuestion