Compartilhar via


Operador cast: ()

Uma conversão de tipo fornece um método para conversão explícita do tipo de um objeto em uma situação específica.

unary-expression
( type-name ) cast-expression

Comentários

Qualquer expressão unário é considerado uma expressão de conversão.

O compilador trata expressão de conversão como tipo nome do tipo após ter sido feita a conversão de um tipo.Projeções de podem ser usadas para converter objetos de qualquer tipo de escalar ou para qualquer outro tipo de escalar.Conversões de tipo explícito são restringidos pelas mesmas regras que determinam os efeitos das conversões implícitas.Restrições adicionais em conversões podem resultar da reais tamanhos ou representação de tipos específicos.

Exemplo

// expre_CastOperator.cpp
// compile with: /EHsc
// Demonstrate cast operator
#include <iostream>

using namespace std;

int main()
{
    double x = 3.1;
    int i;
    cout << "x = " << x << endl;
    i = (int)x;   // assign i the integer part of x
    cout << "i = " << i << endl;
}

// expre_CastOperator2.cpp
// The following sample shows how to define and use a cast operator. 
#include <string.h>
#include <stdio.h>

class CountedAnsiString
{
public:
    // Assume source is not null terminated
    CountedAnsiString(const char *pStr, size_t nSize) :
                      m_nSize(nSize)
    {
        m_pStr = new char[sizeOfBuffer];

        strncpy_s(m_pStr, sizeOfBuffer, pStr, m_nSize);
        memset(&m_pStr[m_nSize], '!', 9); // for demonstration purposes.
    }

    // Various string-like methods...

    const char *GetRawBytes() const
    {
        return(m_pStr);
    }

    // 
    // operator to cast to a const char *
    // 
    operator const char *()
    {
        m_pStr[m_nSize] = '\0';
        return(m_pStr);
    }

    enum
    {
        sizeOfBuffer = 20
    } size;

private:
    char *m_pStr;
    const size_t m_nSize;
};

int main()
{
    const char *kStr = "Excitinggg";
    CountedAnsiString myStr(kStr, 8);

    const char *pRaw = myStr.GetRawBytes();
    printf_s("RawBytes truncated to 10 chars:   %.10s\n", pRaw);

    const char *pCast = myStr; // or (const char *)myStr;
    printf_s("Casted Bytes:   %s\n", pCast);

    puts("Note that the cast changed the raw internal string");
    printf_s("Raw Bytes after cast:   %s\n", pRaw);
}
  
  

Consulte também

Referência

Expressões com operadores unários

Operadores do C++

Precedência e associatividade de operadores

Operador de conversão explícita do tipo: ()

Operadores de conversão

Conceitos

Operadores de conversão