O construtor de cópia não é chamado para inicialização de cópia ou otimizado?
Se o construtor de cópias for feitoprivate
então em
Caso 1: Sem erro, o compilador não se importa se o construtor de cópia foi definido na classe.
Caso 2: Erro, o construtor de cópias é privado e quando é feitopublic
, é elidido.
Otimiza diretamente a cópia sem perceber que, se o construtor foi feitoprivate
?
#include <string>
using std::string;
class T
{
string s;
T(const T &obj):s(obj.s){}
public:
T(const string &str):s(str){}
};
int main()
{
T a = ("Copy Initialization"); //Case: 1
T b = T("Copy Initialization"); //Case: 2
}