Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Operator cast:
Jenis cast menyediakan metode untuk konversi eksplisit jenis objek dalam situasi tertentu.
Sintaksis
cast-expression:
unary-expression
(
type-name
)
cast-expression
Komentar
Ekspresi unary dianggap sebagai ekspresi pemeran.
Pengkompilasi memperlakukan cast-expression sebagai jenis type-name setelah jenis cast dibuat. Cast dapat digunakan untuk mengonversi objek dari jenis skalar apa pun ke atau dari jenis skalar lainnya. Jenis cast eksplisit dibatasi oleh aturan yang sama yang menentukan efek konversi implisit. Batasan lain pada transmisi dapat dihasilkan dari ukuran atau representasi aktual dari jenis tertentu.
Contoh
Konversi cast standar antara jenis bawaan:
// 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;
}
Operator cast yang ditentukan dalam jenis yang ditentukan pengguna:
// 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);
}
RawBytes truncated to 10 chars: Exciting!!
Casted Bytes: Exciting
Note that the cast changed the raw internal string
Raw Bytes after cast: Exciting
Lihat juga
Ekspresi dengan operator unary
Operator, prioritas, dan associativitas bawaan C++
Operator konversi jenis eksplisit: ()
Operator casting (C++)
Operator cast (C)