Pourquoi le constructeur du convertisseur de la classe Child est-il appelé dans le code ci-dessous? Je veux dire, il convertit automatiquement la base en enfant via le constructeur du convertisseur enfant. Le code ci-dessous compile, mais ne devrait-il pas pas compiler puisque je n'ai pas fourni bool Child::operator!=(Base const&)
?C++ Pourquoi le constructeur du convertisseur est-il implicitement appelé?
class Base
{
};
class Child : public Base
{
public:
Child() {}
Child(Base const& base_) :
Base(base_)
{
std::cout <<"should never called!";
}
bool operator!=(Child const&)
{
return true;
}
};
void main()
{
Base base;
Child child;
if(child != base)
std::cout << "not equal";
else
std::cout << "equal";
}
Je suppose que ce post pourrait être un bon exemple de la raison pour laquelle le mot clé explicite existe. – sivabudh
Devrais-je renommer le titre du constructeur de copie en constructeur de convertisseur? – sivabudh