转换运算符:()

类型转换为一个对象类型的显式转换提供方法在特定情况的。

unary-expression
( type-name ) cast-expression

备注

所有一元运算符表达式视为转换表达式。

,在类型转换进行之后,编译器 转换表达式 ,因为类型 的名称 。 转换可用于将任意数据类型的对象到或从其他数据类型。 显式类型转换。确定隐式转换的效果相同的规则约束。 在转换的其他克制可能是由于特定类型的实际大小或表示。

示例

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

请参见

参考

使用一元运算符的表达式

C++运算符

运算符优先级和结合性

显式类型转换运算符:()

转换运算符

概念

转换运算符