Discover How To Use C++ Explicit Conversion Operators For Efficient Windows Development
BCC32 includes support for explicit conversion operators, one of the features in the C++11 standard. The explicit constructors and conversion operators are used to avoid implicit conversions to and from a type.
You can now apply the function specifier explicit in the definition of a user-defined conversion operator. Previously, explicit constructors (including copy constructors) were added to the language in order to prevent unintended conversions being implicitly called by the compiler. Now explicit conversion operators have been added to provide the same control over unintended conversion calls.
Conversion functions declared as explicit work in the same contexts as explicit constructors (that is, direct-initialization, explicit type conversion). Explicit conversion operators produce compiler diagnostics in the same contexts (copy-initialization) as explicit constructors do.
How it works…
To declare explicit conversion operators (regardless of whether they are functions or function templates), use the explicit
specifier in the declaration. The following example shows a converting operator:
class T { }; class X { public: explicit operator T() const ; }; void m() { X x; // with cast T tc = (T)x; // ok // without cast T t = x; // error: E2034 Cannot convert 'X' to 'T' }
Head over and check out all of the modern C++ language features available in C++Builder.
Leave Your Comment