¿El constructor de copia no se llama para inicialización de copia u optimizado?
Si se realiza el constructor de copiaprivate
entonces en
Caso 1: No hay error, al compilador no le importa si el constructor de copia se definió en clase.
Caso 2: Error, el constructor de copia es privado y cuando se hacepublic
, se elide.
¿Optimiza directamente la copia sin darse cuenta de que si el constructor se hizoprivate
?
#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
}