爲什麼在下面的代碼中調用Child類的轉換器構造函數?C++爲什麼隱式調用轉換器構造函數?
我的意思是,它會通過Child轉換器構造函數自動將Base轉換爲Child。下面的代碼編譯,但不應該不是編譯,因爲我還沒有提供bool Child::operator!=(Base const&)
?
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";
}
我想這篇文章可能是一個很好的用例,爲什麼明確的關鍵字存在。 – sivabudh 2010-03-15 23:44:44
我應該將副本構造函數的標題重命名爲轉換器構造函數嗎? – sivabudh 2010-03-15 23:53:03