C++ явный конструктор, который принимает указатель

Недавно я наткнулся на явный конструктор, который получает один аргумент указателя. Интересно, нужно ли в этом случае явное ключевое слово? поскольку для указателя нет конструктора, не может быть и неявного преобразования.

class Foo {
 public:
  explicit Foo(int* int_ptr);
}

1 ответ

Решение

Следующий код:

void f(Foo) {}

int main()
{
    int* p;
    f(p);
}
  • Не в состоянии скомпилировать с explicit,

  • Счастливо компилируется без него.

живой пример на godbolt.org

Другие вопросы по тегам