Swiftorial Logo
Home
Swift Lessons
AI Tools
Learn More
Career
Resources

Type Conversion in C++

Introduction

Type conversion is the process of converting a value from one data type to another. In C++, type conversions can be implicit or explicit. Understanding type conversions is essential for writing robust and bug-free code.

Implicit Type Conversion

Implicit type conversion, also known as coercion, happens automatically when the compiler converts one data type to another. This usually occurs when you mix different data types in an expression.

Example:

int a = 5;
double b = 6.2;
double c = a + b; // 'a' is implicitly converted to double
Here, the integer 'a' is automatically converted to a double to match the type of 'b'.

Explicit Type Conversion

Explicit type conversion, also known as casting, is when you manually convert a value from one type to another. In C++, this can be done using C-style casts, function-style casts, or the C++ casting operators.

Example:

double d = 9.8;
int i = (int)d; // C-style cast
Here, the double 'd' is explicitly cast to an integer type, truncating the decimal part.

C++ Casting Operators

C++ provides four casting operators for explicit type conversion:

  • static_cast
  • dynamic_cast
  • const_cast
  • reinterpret_cast

Each of these operators serves a specific purpose and should be used accordingly.

Example:

double d = 9.8;
int i = static_cast<int>(d); // static_cast
This example shows how to use static_cast to convert a double to an integer.

Casting Pointers

Casting pointers is a common scenario in C++ where you might need to change the type of a pointer to a different type.

Example:

int a = 10;
void* ptr = &a; // void pointer
int* intPtr = static_cast<int*>(ptr); // casting back to int pointer
Here, a void pointer is cast back to an integer pointer using static_cast.

Conclusion

Type conversion is a fundamental concept in C++ programming. Whether implicit or explicit, understanding how and when to convert data types can help you write more efficient and error-free code.