Back to results for “OOP”
C++ › Casting & Conversions

What is the difference between implicit and explicit conversions?

Beginner

Answer

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);    // ok
Real-world example Marking a constructor explicit stops an int from silently becoming an object in an overload call.

Common follow-ups: What does explicit prevent? | Which functions can trigger implicit conversion?