Considérese la clase foo
con dos constructores se define así:¿Por qué hay una conversión de tipo implícita de punteros a bool en C++?
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;}
};
una instancia de la clase con una cadena literal, y adivinar qué constructor se llama?
foo a ("/path/to/file");
Salida:
ctor 2
No sé ustedes, pero no me parece que el comportamiento más intuitivo en la historia de la programación. Aunque creo que hay alguna razón inteligente para ello, y me gustaría saber qué podría ser.
posible duplicado de [¿Por qué el compilador elige bool sobre cadena para typecast implícito de L ""?] (Http://stackoverflow.com/questions/316181/why-does-the-compiler-choose-bool-over -string-for-implicit-typecast-of-l) – Hasturkun
Sin embargo, otra pregunta similar: [Función/Método de sobrecarga C++: tipo de datos de confusión?] (http://stackoverflow.com/questions/1636181/function-method-overloading- c-data-type-confusion) – Athari
Lo siento. Hice la búsqueda (ya que pensé que sería una pregunta frecuente), pero no encontré ninguna pregunta con un título que implicara que la pregunta era sobre esto. – Oystein