Docs says that "The compiler does not use an explicit constructor to
implement an implied conversion of types. It's purpose is reserved
explicitly for construction."
I put up code of three cases at the bottom. Hope you can help me understand
the "explicit" keyword and its usage. Specifically,
Is "explicit" keyword only associated with constructor in C++?
What's "implied conversion of types"?
Is "ExClass Ex=5;" so-called implied conversion since it converts an int
into ExClass type? If so then why "ExClass Ex(5);" is not since it calls a
conversion constructor?
Thank you for your help!
Case 1:
---------------
struct ExClass{
explicit ExClass(int) { cout << "explicit conversion"; }
ExClass(long) { cout << "implicit conversion"; }
};
int main (){
ExClass Ex=5;
return 0;
}
OUTPUT:
implicit conversion
Case 2:
----------------
struct ExClass{
ExClass(int) { cout << "explicit conversion"; }
ExClass(long) { cout << "implicit conversion"; }
};
int main (){
ExClass Ex=5;
return 0;
}
OUTPUT:
explicit conversion
Case 3:
-------------------
struct ExClass{
ExClass(int) { cout << "explicit conversion"; }
ExClass(long) { cout << "implicit conversion"; }
};
int main (){
ExClass Ex(5);
return 0;
}
OUTPUT:
explicit conversion