Ali majid konversi

download Ali majid konversi

of 16

  • date post

    08-Jul-2015
  • Category

    Documents

  • view

    114
  • download

    0

Embed Size (px)

Transcript of Ali majid konversi

PEMOGRAMAN DASAR

PEMOGRAMAN DASARKONVERSIAli Majid WardanaMateriApa Itu Konversi Data?

Konversi suatu ekspresi dari jenis tertentu ke jenis lain yang dikenal sebagai tipe-casting.Casting TipeMengkonversi sebuah ekspresi dari tipe yang diberikan dalam jenis lain dikenal sebagai jenis-casting.Kita telah melihat beberapa cara untuk melemparkan ketik:

Konversi implisitimplisit konversi tidak memerlukan operator manapun. Mereka secara otomatis dilakukan ketika nilai akan disalin ke sebuah tipe yang kompatibel. Sebagai contoh:pendek 2000 =,int b,b = a;

Di sini, nilai telah dipromosikan dari pendek int dan kita tidak harus menentukan segala-casting tipe operator. Ini dikenal sebagai konversi standar. Standar konversi mempengaruhi data jenis fundamental, dan memungkinkan konversi seperti konversi antara tipe numerik (singkat ke int, int ke float, double ke int ), ke atau dari bool, dan beberapa konversi pointer. Beberapa dari konversi ini dapat diartikan hilangnya presisi, yang compiler dapat sinyal dengan peringatan. Hal ini dapat dihindari dengan konversi eksplisit.Casting TipeMengkonversi sebuah ekspresi dari tipe yang diberikan dalam jenis lain dikenal sebagai jenis-casting.Kita telah melihat beberapa cara untuk melemparkan ketik:

Explicit konversiC + + adalah bahasa yang kuat-diketik. Banyak konversi, khususnya mereka yang menyiratkan interpretasi yang berbeda dari nilai, memerlukan konversi eksplisit. Kita telah melihat dua notasi untuk konversi tipe eksplisit: fungsional dan c-seperti casting:pendek = 2000;int b,b = (int) a; / / seperti notasi castc-b= int (a); / / notasi fungsional

Menjamin fungsionalitas dari operator konversi eksplisit adalah cukup untuk kebutuhan yang paling mendasar dengan tipe data.Casting TipeMengkonversi sebuah ekspresi dari tipe yang diberikan dalam jenis lain dikenal sebagai jenis-casting.Kita telah melihat beberapa cara untuk melemparkan ketik:

dynamic_castdynamic_cast dapat digunakan hanya dengan pointer dan referensi ke obyek. Tujuannya adalah untuk memastikan bahwa hasil konversi tipe obyek yang lengkap yang valid dari kelas diminta.

Oleh karena itu, dynamic_cast selalu berhasil ketika kita melemparkan kelas ke salah satu kelas dasar nya:kelas CBase {};CDerived kelas: CBase public {};

CBase b; CBase pb *;CDerived d; CDerived * pd;

pb = dynamic_cast (& d); / / ok:-untuk-baseberasalpd= dynamic_cast (& b); / / salah: base-ke-turunan

Konversi kedua potongan kode ini akan menghasilkan kesalahan kompilasi sejak-ke-turunan konversi dasar tidak diperbolehkan dengan dynamic_cast kecuali kelas dasar adalah polimorfik.Casting TipeMengkonversi sebuah ekspresi dari tipe yang diberikan dalam jenis lain dikenal sebagai jenis-casting.Kita telah melihat beberapa cara untuk melemparkan ketik:

static_cast

static_castdapat melakukan konversi antara pointer ke kelas yang terkait, tidak hanya dari kelas turunan ke basis, tetapi juga dari kelas dasar untuk menjadi produk turunan. Hal ini memastikan bahwa setidaknya kelas kompatibel jika objek yang tepat akan diubah, namun tidak ada pemeriksaan keamanan yang dilakukan selama runtime untuk memeriksa apakah obyek yang dikonversi pada kenyataannya merupakan objek penuh dari jenis tujuan. Oleh karena itu, terserah kepada programmer untuk memastikan bahwa konversi tersebut aman. Di sisi lain, overhead dari keselamatan-cek jenis dynamic_cast dihindari.kelas CBase {};CDerived kelas: CBase public {};CBase * a CBase baru =;CDerived * b static_cast = (a);

Ini akan berlaku, meskipun b akan menunjuk ke suatu objek lengkap kelas dan dapat menyebabkan error runtime jika dereferenced.Casting TipeMengkonversi sebuah ekspresi dari tipe yang diberikan dalam jenis lain dikenal sebagai jenis-casting.Kita telah melihat beberapa cara untuk melemparkan ketik:

reinterpret_castreinterpret_castmengkonversi semua jenis penunjuk untuk semua jenis pointer lain, bahkan dari kelas yang tidak terkait. Hasil operasi salinan biner sederhana nilai dari satu pointer ke yang lain. Semua konversi pointer diperbolehkan: baik isi maupun menunjuk tipe pointer itu sendiri diperiksa.

Hal ini juga dapat cast pointer ke atau dari tipe integer. Format di mana nilai ini merupakan pointer integer adalah platform-khusus. Jaminan satu-satunya adalah bahwa seorang tokoh pointer ke tipe integer cukup besar untuk sepenuhnya berisi itu, diberikan untuk dapat dibuang kembali ke pointer yang valid.

Konversi yang dapat dilakukan oleh reinterpret_cast tetapi tidak oleh static_cast tidak menggunakan spesifik di C + + yang rendah tingkat operasi, yang hasil interpretasi dalam kode yang umumnya sistem-spesifik, dan dengan demikian non-portabel. Sebagai contoh:kelas A {};kelas B {};A * A baru =;B * b reinterpret_cast = (a);Casting TipeMengkonversi sebuah ekspresi dari tipe yang diberikan dalam jenis lain dikenal sebagai jenis-casting.Kita telah melihat beberapa cara untuk melemparkan ketik:

const_castJenis casting memanipulasi constness suatu objek, baik untuk mengatur atau untuk dihapus. Sebagai contoh, untuk melewati sebuah argumen const ke fungsi yang mengharapkan-konstanta parameter non:/ / const_cast# include using namespace std;

void cetak (char * str){cout