Я читал, что рекомендуется определять конструкторы с одним аргументом explicit
, чтобы избежать неявных преобразований. Я понимаю ловушку повышения значения int до объекта класса. Интересно, относится ли это также к конструкторам, принимающим ссылочные типы. Как можно спровоцировать неявное преобразование в этом случае:
class Foo
{
public:
Foo(Bar& bar) { }
};
Изменяется ли ситуация, если конструктор принимает указатели, возможно ли преобразование из NULL
и nullptr
?
class Foo
{
public:
Foo(Bar* bar) { }
};