devxlogo

Restricting Implicit Conversion

Restricting Implicit Conversion

The compiler performs implicit conversion whenever it feels the need for it. For example:

class test{   public:   test (int y) : h(y)      {}       int h;};void func (test t){    cout << t.h << '
';}int main (){        func (7);   //implcit conversion applied here}

The previous code compiles successfully because the compiler implictly converts int to test by using its one-argument constructor.

To restrict this you can use the explicit keyword in the constructor, like this:

 explicit test (int y) : h(y) {}

Now, the program won't compile, and throws an error saying that int when it is expecting test.

If you still want to make it work, you can perform an explicit cast in the calling statement like this:

 func (static_cast(7));

This way, there's no chance for the compiler to do anything backward.

See also  Professionalism Starts in Your Inbox: Keys to Presenting Your Best Self in Email
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist