Go back to Richel Bilderbeek's homepage.

Go back to Richel Bilderbeek's C++ page.

 

 

 

 

 

(C++) explicit

 

explicit is a keyword to disable converting constructors.

 

 

 

 

 

Example

 

The example below will not compile, due to the explicit keyword written in the constructor of Test:

 

struct Test
{
  explicit Test(const int x) {}
};

int main()
{
  Test t_i = 0;
}

 

The line in main needs to call a converting constructor, because an int is not a Test (that is: they are different data types).

 

 

 

 

 

advice

 

 

 

 

 

References

 

  1. Herb Sutter. Exceptional C++. ISBN: 0-201-61562-2. Item 20, page 71, top guideline :'Watch out for hidden temporaries created by implicit conversions. One good way to avoid this is to make constructors explicit when possible, and avoiding writing conversion operators'
  2. Bjarne Stroustrup. The C++ Programming Language (4th edition). 2013. ISBN: 978-0-321-56384-2. Chapter 16.4. Advice. page 479: '[5] By default declare single-argument constructors explicit'

 

 

 

 

 

Go back to Richel Bilderbeek's C++ page.

Go back to Richel Bilderbeek's homepage.

 

Valid XHTML 1.0 Strict