Por que há uma conversão implícita de tipo de ponteiros para bool no C ++?
Considere a classefoo
com dois construtores definidos assim:
class foo
{
public:
foo(const std::string& filename) {std::cout << "ctor 1" << std::endl;}
foo(const bool some_flag = false) {std::cout << "ctor 2" << std::endl;}
};
Instanciar a classe com uma string literal e adivinhar qual construtor é chamado?
foo a ("/path/to/file");
Resultado:
Ctor 2
Não sei você, mas não acho esse o comportamento mais intuitivo da história da programação. Aposto que há alguma razão inteligente para isso, e gostaria de saber o que pode ser?