C++ › Casting & Conversions
What is the difference between implicit and explicit conversions?
BeginnerAnswer
Implicit conversions happen automatically (e.g., int to double, or via a non-explicit constructor/conversion operator). Explicit conversions require a cast or an explicit constructor call. Marking single-argument constructors and conversion operators explicit prevents surprising implicit conversions that can hide bugs.
struct S { explicit S(int); };
S a = 5; // error: explicit
S b(5); // okReal-world example Marking a constructor explicit stops an int from silently becoming an object in an overload call.