devxlogo

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.

Charlie has over a decade of experience in website administration and technology management. As the site admin, he oversees all technical aspects of running a high-traffic online platform, ensuring optimal performance, security, and user experience.

See also  How Seasoned Architects Evaluate New Tech

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.