Rumah Keuangan Pribadi Memulai Pemrograman dengan C ++ For Dummies Cheat Sheet - dummies

Memulai Pemrograman dengan C ++ For Dummies Cheat Sheet - dummies

Video: Python Tutorial for Beginners [Full Course] Learn Python for Web Development 2024

Video: Python Tutorial for Beginners [Full Course] Learn Python for Web Development 2024
Anonim

Oleh Stephen R. Davis

C ++ bukanlah bahasa pemrograman yang mudah untuk dikuasai. Hanya melalui pengalaman akan segudang kombinasi simbol mulai tampak alami bagi Anda. Lembar Cheat ini, bagaimanapun, memberi Anda beberapa tip bagus untuk meringankan transisi dari C ++ ke C + + guru: Tahu cara membaca ekspresi C ++ yang rumit; belajar bagaimana menghindari masalah pointer; dan mencari tahu bagaimana dan kapan harus membuat salinan dalam.

Cara Membaca Ekspresi C ++ Kompleks

C ++ penuh dengan simbol kecil, yang masing-masing menambahkan makna ekspresi. Aturan tata bahasa C ++ begitu fleksibel sehingga simbol-simbol ini dapat digabungkan dalam kombinasi yang hampir tak tertembus. Ekspresi dalam bahasa C yang sederhana bisa jadi sangat bodoh sehingga dulu ada kontes tahunan untuk siapa yang bisa menulis program yang paling tidak jelas dan siapa yang bisa memahaminya.

Tidak ada ide bagus untuk mencoba menulis kode yang rumit tapi kadang Anda akan menemukan ekspresi di C ++ yang agak membingungkan pada pandangan pertama. Cukup gunakan langkah-langkah berikut untuk menemukannya:

  1. Mulai dari kurung yang paling banyak disematkan.

    Mulailah mencari kurung paling luar. Di dalam mereka, cari kurung yang disisipkan. Ulangi prosesnya sampai Anda berhasil mencapai pasangan tanda kurung terdalam. Mulai evaluasi subexpression yang pertama dengan menggunakan aturan berikut. Begitu Anda memahami ungkapan itu, kembalilah ke tingkat berikutnya dan ulangi prosesnya.

  2. Di dalam sepasang tanda kurung, evaluasi setiap operasi sesuai urutan sebelumnya.

    Perintah yang dievaluasi operator ditentukan oleh prioritas operator yang ditunjukkan pada tabel. Indirection datang sebelum perkalian yang datang sebelum penambahan sehingga berikut ini menambahkan 1 ditambah 2 kali nilai yang ditunjukkan oleh * ptr.

int i = 1 + 2 * * ptr;
Operator di urutan awal

Diawal Operator Arti
1 () (unary) Tuliskan fungsi
2 * dan -> unary) Dereference a pointer
2 - (unary) Mengembalikan argumen negatifnya
3 ++ (unary) Kenaikan
3 > - (unary) Pengurangan 4
* (biner) Perkalian 4
/ (biner) Divisi 4
% (biner) Modulo 5
+ (biner) Penambahan 5
- (biner) Pengurangan 6
&& (biner) Logika DAN 6
! ! Mengenal operasi dari prioritas yang sama dari kiri ke kanan (kecuali tugas, yang pergi ke arah lain). Sebagian besar operator dengan prioritas yang sama mengevaluasi dari kiri ke kanan. Dengan demikian, berikut ini menambahkan 1 sampai 2 dan menambahkan hasilnya ke 3:
int i = 1 + 2 + 3; Urutan evaluasi beberapa operator tidak masalah. Misalnya, selain bekerja sama dari kiri ke kanan seperti halnya dari kanan ke kiri. Urutan evaluasi membuat banyak perbedaan untuk beberapa operasi seperti pembagian. Berikut ini membagi 8 dengan 4 dan membagi hasilnya dengan 2: int i = 8/4/2;
  1. Pengecualian utama terhadap peraturan ini adalah penugasan, yang dievaluasi dari kanan ke kiri:

    a = b = c;

    Ini menetapkan c ke b dan hasilnya ke a.
    

    Evaluasi subexpressions tanpa urutan tertentu.

    Perhatikan ungkapan berikut:
    

    int i = f () + g () * h ();

    Perkalian memiliki preseden yang lebih tinggi, jadi Anda mungkin berasumsi bahwa fungsi g () dan h () dipanggil sebelum f (), namun, ini bukan masalahnya. Fungsi panggilan memiliki prioritas tertinggi dari semuanya, jadi ketiga fungsi tersebut disebut sebelum perkalian atau penambahan dilakukan. (Hasil kembali dari g () dan h () dikalikan dan kemudian ditambahkan ke hasil yang dikembalikan dari f ().
    

    Satu-satunya saat urutan fungsi itu disebut membuat perbedaan adalah ketika fungsi memiliki efek samping. seperti membuka file atau mengubah nilai variabel global. Anda pasti tidak akan menulis program Anda sehingga mereka bergantung pada jenis efek samping ini.

  2. Lakukan semua jenis konversi hanya jika diperlukan.

    Anda seharusnya tidak membuat lebih banyak jenis konversi daripada yang benar-benar diperlukan. Misalnya, ekspresi berikut memiliki setidaknya tiga dan mungkin empat jenis konversi:

    float f = 'a' + 1;
    

    char 'a' harus dipromosikan ke int untuk melakukan penambahan. Int kemudian dikonversi menjadi double dan kemudian turun dikonversi menjadi float presisi tunggal. Ingat bahwa semua aritmatika dilakukan baik dalam int atau double. Anda umumnya harus menghindari melakukan aritmatika pada tipe karakter dan hindari pengapungan presisi tunggal sama sekali.

    5 Cara Menghindari Masalah Pointer di C ++

  3. Di C ++, pointer

    adalah variabel yang berisi alamat objek di memori internal komputer. Gunakan langkah-langkah ini untuk menghindari masalah dengan petunjuk di C ++:
    

    Inisialisasi pointer saat dideklarasikan.

Jangan pernah meninggalkan variabel pointer yang tidak diinisiasi - hal-hal tidak akan terlalu buruk jika pointer yang tidak diinisiasi selalu berisi nilai acak - sebagian besar nilai acak adalah nilai pointer ilegal dan akan menyebabkan program mogok begitu penggunaannya. Masalahnya adalah bahwa variabel yang tidak diinisiasi cenderung mengambil nilai variabel pointer lain yang sebelumnya digunakan. Masalah ini sangat sulit untuk debug.

Jika Anda tidak tahu apa lagi untuk menginisialisasi pointer ke, inisialisasi ke nullptr. nullptr dijamin menjadi alamat ilegal Nol keluar petunjuk setelah Anda menggunakannya. Demikian pula, selalu nol sebuah variabel pointer setelah pointer tidak lagi valid dengan menugaskannya nilai nullptr. Hal ini terutama terjadi ketika Anda mengembalikan satu blok memori ke tumpukan dengan menggunakan hapus; selalu nol pointer setelah kembali tumpukan memori.

  1. Alokasikan memori dari tumpukan dan kembalikan ke tumpukan di "tingkat" yang sama untuk menghindari kebocoran memori.

    Selalu coba untuk mengembalikan blok memori ke tumpukan pada tingkat abstraksi yang sama dengan saat Anda mengalokasikannya. Ini umumnya berarti mencoba untuk menghapus memori pada tingkat panggilan fungsi yang sama.

    Catch pengecualian untuk menghapus memori bila perlu.

  2. Jangan lupa bahwa pengecualian dapat terjadi hampir setiap saat. Jika Anda berniat untuk menangkap pengecualian dan terus beroperasi (sebagai lawan membiarkan program crash), pastikan bahwa Anda menangkap pengecualian dan mengembalikan blok memori ke tumpukan sebelum petunjuk yang mengarah ke mereka keluar dari ruang lingkup dan memori adalah kalah.

    Pastikan jenisnya sesuai.

  3. Selalu pastikan jenis pointer sesuai dengan tipe yang dibutuhkan. Jangan recast pointer tanpa alasan tertentu. Perhatikan hal berikut:

    void fn (int * p); void myFunc () {char c = 'a'; char * pC = & c; fn ((int *) pC);}

  4. Fungsi di atas dikompilasi tanpa keluhan karena pointer karakter pC telah direkonstruksi ke int * agar sesuai dengan deklarasi fn (int *); Namun, program ini hampir pasti tidak akan berhasil. Fungsi fn () mengharapkan pointer ke bilangan bulat 32-bit penuh dan bukan karakter rinky-dink 8 bit char. Jenis masalah ini sangat sulit dipilah.

    Bagaimana dan Kapan Membuat Salinan dalam Kelas C ++

  5. yang mengalokasikan sumber daya di konstruktor mereka biasanya harus menyertakan konstruktor salinan untuk membuat salinan dari sumber daya ini. Mengalokasikan blok memori baru dan menyalin isi dokumen asli ke dalam blok baru ini dikenal dengan membuat

    deep copy

(berlawanan dengan salinan dangkal default). Gunakan langkah-langkah berikut untuk menentukan bagaimana dan kapan harus membuat salinan dalam C ++:

Selalu buat salinan dalam jika konstruktor mengalokasikan sumber daya.

Secara default, C ++ membuat apa yang disebut "dangkal" salinan anggota-oleh-anggota objek saat mengirimkannya ke fungsi atau sebagai hasil sebuah tugas. Anda harus mengganti operator salin dangkal default dengan salinan dalamnya setara untuk kelas yang mengalokasikan sumber daya di konstruktor. Sumber daya paling umum yang dialokasikan adalah memori tumpukan yang dikembalikan oleh operator baru.

Selalu sertakan penghancur untuk kelas yang mengalokasikan sumber daya. Jika Anda membuat konstruktor yang mengalokasikan sumber daya, Anda harus membuat penghancur yang mengembalikannya. Tidak ada pengecualian. Selalu mendeklarasikan destructor virtual.

  1. Kesalahan pemula yang umum adalah lupa mendeklarasikan destruktor Anda secara virtual. Program akan berjalan baik sampai beberapa programmer yang tidak curiga datang dan mewarisi dari kelas Anda. Program ini masih tampak berhasil, namun karena destruktor di kelas dasar tidak dapat dipanggil dengan benar, kebocoran memori dari program Anda seperti saringan sampai akhirnya mogok. Masalah ini sulit ditemukan.

    Selalu sertakan konstruktor salin untuk kelas yang mengalokasikan sumber daya.

  2. Konstruktor copy membuat salinan objek yang tepat saat ini dengan mengalokasikan memori dari tumpukan dan menyalin isi objek sumber.

    Selalu timpa operator penugasan untuk kelas yang mengalokasikan sumber daya.

  3. Pemrogram harus berkecil hati karena mengesampingkan operator, namun operator penugasan adalah pengecualian. Anda harus mengganti operator penugasan untuk kelas yang mengalokasikan sumber daya di konstruktor.

    Operator penugasan harus melakukan tiga hal:

  4. Pastikan benda kiri dan kanan bukan obyek yang sama. Dengan kata lain, pastikan programmer aplikasi tidak menulis sesuatu seperti (a = a). Jika mereka, tidak melakukan apapun.

    Ajukan kode yang sama seperti destruktor pada objek tangan kiri untuk mengembalikan sumber dayanya.

  5. Ajukan kode yang sama dengan konstruktor salin untuk membuat salinan dalam objek tangan kanan ke objek tangan kiri.

    Jika Anda tidak dapat melakukan itu, maka hapuslah konstruktor salinan dan operator penugasan sehingga program tidak dapat membuat salinan dari objek Anda.

    Jika Anda bahkan tidak dapat melakukannya karena kompiler Anda tidak mendukung fitur konstruktor hapus C ++ 2011, buatlah konstruktor dan operator salin kosong dan nyatakan mereka dilindungi agar kelas lain tidak menggunakannya.

Memulai Pemrograman dengan C ++ For Dummies Cheat Sheet - dummies

Pilihan Editor

Membuat Kartu Ucapan di Microsoft Word 2003 - dummies

Membuat Kartu Ucapan di Microsoft Word 2003 - dummies

Jika Anda ingin membuat sesuatu di Word yang hanya akan menyilaukan seseorang, coba tangan Anda dengan kartu ucapan yang disesuaikan. Untuk mengatur Word agar membuat kartu ucapan dari satu lembar kertas ukuran standar, ikuti langkah-langkah ini: 1. Pilih File -> Page Setup. 2. Klik tab Margins. 3. Pilih Landscape ...

Membuat Index of Word 2007 Document - dummies

Membuat Index of Word 2007 Document - dummies

Jika Anda ingin membuat indeks untuk Word Anda Dokumen 2007, tugas pertama adalah menandai kata atau frasa yang ingin Anda sertakan dalam indeks. Cara yang paling umum untuk melakukannya adalah dengan memasukkan penanda indeks dalam dokumen pada setiap kemunculan setiap item yang ingin Anda tampilkan ...

Editing di Word 2007: Melacak Perubahan dan Review - dummies

Editing di Word 2007: Melacak Perubahan dan Review - dummies

Menulis adalah seni yang sepi ... yaitu , sampai editor muncul. Mereka akan membuat revisi dengan menambahkan karya tulis Anda dengan hati-hati, memindahkan barang-barang, dan menghapus teks (Aduh!). Tidak ada cara untuk mengidentifikasi teks asli Anda dari teks yang dimodifikasi - kecuali jika Anda menggunakan alat Pelacakan Lagu Word 2007. Pelacakan perubahan sebagai ...

Pilihan Editor

Bagaimana Menonaktifkan dan Mengaktifkan Halaman di Squarespace - dummies

Bagaimana Menonaktifkan dan Mengaktifkan Halaman di Squarespace - dummies

Saat Anda melakukan pemeliharaan situs, kemungkinan besar Anda ingin menonaktifkan halaman situs Anda yang sedang dibangun. Squarespace memungkinkan Anda untuk dengan mudah menonaktifkan dan mengaktifkan kembali halaman. Bagaimana cara menonaktifkan halaman di Squarespace Jika Anda ingin menonaktifkan halaman di situs Anda, Anda dapat melakukannya di ...

Bagaimana Menentukan Navigasi Situs Anda di Squarespace - dummies

Bagaimana Menentukan Navigasi Situs Anda di Squarespace - dummies

Template yang Anda pilih di Squarespace mendikte berbagai area navigasi yang Anda miliki di situs Anda. Template Anda mungkin menyediakan area navigasi berikut di Pengelola Konten: Atas / Utama: Semua template memiliki navigasi teratas atau utama. Sekunder: Halaman yang ditambahkan ke area navigasi ini bukan fokus utama situs Anda. Footer: Beberapa template memiliki ...

Bagaimana Menemukan Editor Gaya Squarespace - dummies

Bagaimana Menemukan Editor Gaya Squarespace - dummies

Anda menggunakan Editor Gaya di Squarespace kapan saja Anda perlu memodifikasi desain situs Anda atau elemen tertentu di situs Anda. Style Editor adalah bagian dari mode Style, yang Anda akses di area Preview. Ikuti langkah-langkah ini untuk memuat Editor Gaya di browser Anda: Masuk ke situs web Anda. Anda ...

Pilihan Editor

Bagaimana Memodifikasi Master Slide di PowerPoint 2016 - dummies

Bagaimana Memodifikasi Master Slide di PowerPoint 2016 - dummies

Jika Anda tidak menyukai tata letak dari slide Anda dalam presentasi PowerPoint 2016, hubungi Master Slide dan lakukan sesuatu tentang hal itu, seperti yang ditunjukkan pada langkah-langkah ini: Buka Slide Master View dengan membuka tab View pada Ribbon dan kemudian klik tombol Slide Master, yang terdapat dalam Presentasi Grup tampilan Sebagai alternatif, ...

Bagaimana Memodifikasi Grafis SmartArt di PowerPoint - dummies

Bagaimana Memodifikasi Grafis SmartArt di PowerPoint - dummies

Setelah membuat grafik SmartArt dalam presentasi PowerPoint Anda, Anda mungkin ingin mengubahnya. Modifikasi dapat mencakup perubahan jenis atau tata letak grafis, menambah atau menghapus bentuk, dan mengubah urutan bentuk bentuk. Pada slide 1, klik bingkai grafis SmartArt untuk memilih keseluruhan grafik. Klik SmartArt Tools ...