Это взорвало мой разум сегодня, пока я не понял его только compiles с булевыми параметрами.Конструктор с параметром bool позволяет компилировать код Java-esque
#include <iostream>
using namespace std;
class Foo {
bool _param;
public:
Foo(bool param) {
_param = param;
}
void say() {
cout << "Param is "<< _param << endl;
}
};
int main() {
Foo foo = new Foo(true);
foo.say();
return 0;
}
Я также заметил, что конструктор вызывается дважды , то я думаю, что указатель создан «новый Foo (истина)» в настоящее время отливают в булево. Это оно? Если да, то почему он не работает с другими типами параметров? Есть ли что-то еще, чего я не вижу?
При указателе типа "явный" может быть сделана ваша ошибка. – Jarod42