Udostępnij za pośrednictwem


Operator rzutowania:)

Rzutowanie typu zapewnia metodę konwersji jawnej typu obiektu w konkretnej sytuacji.

unary-expression
( type-name ) cast-expression

Uwagi

Każde wyrażenie jednoargumentowe uważa się za wyrażeniem rzutowania.

Kompilator traktuje wyrażenie oddanych jako typ Nazwa typu po dokonaniu rzutowanie typu.Poświaty może służyć do konwertowania obiektów dowolnego typu skalarne do lub z innego typu skalarnych.Jawnie określony typ pracy są ograniczone przez tych samych reguł, które określają skutków konwersje niejawne.Dodatkowe ograniczenia na poświaty mogą wynikać z rzeczywistych rozmiarów lub reprezentacji określonych typów.

Przykład

// 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);
}
  
  

Zobacz też

Informacje

Wyrażenia z operatory jednoargumentowe

Operatory języka C++

Priorytet i łączność operatorów

Jawne typu konwersji operatora:)

Operatory odlewania

Koncepcje

Operatory rzutowania