cast in cpp code example

Example 1: c++ cast operator

struct X {
    //implicit conversion
    operator int() const { return 7; }
 
    // explicit conversion
    explicit operator int*() const { return nullptr; }
 
//   Error: array operator not allowed in conversion-type-id
//   operator int(*)[3]() const { return nullptr; }
    using arr_t = int[3];
    operator arr_t*() const { return nullptr; } // OK if done through typedef
//  operator arr_t () const; // Error: conversion to array not allowed in any case
};
 
int main()
{
    X x;
 
    int n = static_cast<int>(x);   // OK: sets n to 7
    int m = x;                     // OK: sets m to 7
 
    int* p = static_cast<int*>(x);  // OK: sets p to null
//  int* q = x; // Error: no implicit conversion
 
    int (*pa)[3] = x;  // OK
}

Example 2: cast c++

#include <iostream>
using namespace std;
int main(){
	int x = 4;
	int y = 2;
	cout<<"La divisione dei valori e': "<<(float)y/x<<endl;
}

Example 3: c++ casting

static_cast:
//does implicit conversions between types.
void* data;
pointer *pData = static_cast<pointer*>(data);

const_cast:
//this can be used to remove or add the const to a variable.
const char* characters;
const_cast<char*>(characters);

reinterpret_cast:
//this cast is dangerous since it turns one type directly into another.
struct S1 { int a; } s1;
int* p1 = reinterpret_cast<int*>(&s1);

Tags:

Cpp Example