What is casting in C++? What is a cast operator? What types of casting can be used in a C++ app? What is const_cast in C++? How can I use const_cast in C++?
C++ is a fast and powerful programming language suitable for manipulating data and memory for almost any purpose including operations with data types, operations with pointers, operations between classes, etc. In C++, both structs and classes can be used with const_cast operations.
In this post, we will explain how to use const_cast in C++. Before this, let’s remember what is casting in C++?
What is casting in C++?
Casting is a technique by which one data type to another data type. The operator used for this purpose is known as the cast operator. It is a unary operator which forces one data type to be converted into another data type. It takes on the format:
In C++, a cast operator is an Unary Operator which forces one data type to be converted into another data type.
In general, C++ supports four types of casting:
- Static Cast
- Dynamic Cast
- Const Cast
- Reinterpret Cast
What is Const Cast?
Constant Cast (const_cast) is a cast operator that converts between types with different cv-qualification.
Is there an example of how to use const_cast?
This is a simple example to the const_cast usage,
1 2 3 4 |
std::string str = "This is a string"; char *s = const_cast<char *>( str.c_str() ); |
Note that here str should be initialized first to use const_cast othwerwise uninitialized str will adress a random place which may cause memory problems. So, if you are not sure it is exactly installed, the best thing is before using const_cast always check if it is addressing or null / empty. If you can’t you must be sure hundred percent it is adressed.
If we go on to this same example, here is the full and safe example to const_cast,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
#include<iostream> #include <exception> int main() { std::string str; str = "This is a string"; if( !str.empty() ) { char *s = const_cast<char *>( str.c_str() ); std::cout << s << std::endl; str = "New string"; std::cout << s << std::endl; } getchar(); return 0; } |
C++ Builder is the easiest and fastest C and C++ IDE for building simple or professional applications on the Windows, MacOS, iOS & Android operating systems. It is also easy for beginners to learn with its wide range of samples, tutorials, help files, and LSP support for code. RAD Studio’s C++ Builder version comes with the award-winning VCL framework for high-performance native Windows apps and the powerful FireMonkey (FMX) framework for cross-platform UIs.
There is a free C++ Builder Community Edition for students, beginners, and startups; it can be downloaded from here. For professional developers, there are Professional, Architect, or Enterprise versions of C++ Builder and there is a trial version you can download from here.