Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Menghidupkan Objek Kelas C dengan Betul dan Menggunakan Pembinanya?

Bagaimanakah Saya Menghidupkan Objek Kelas C dengan Betul dan Menggunakan Pembinanya?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-22 08:07:35637semak imbas

How Do I Correctly Instantiate a C   Class Object and Invoke Its Constructor?

Memahami Panggilan Pembina dalam C

Dalam C , pembina ialah fungsi ahli khas yang dilaksanakan secara automatik apabila objek kelas dicipta. Mereka bertanggungjawab untuk memulakan ahli data objek.

Masalahnya

Pertimbangkan coretan kod berikut:

#include <iostream>
using namespace std;

class Class {
    public:
        Class() {
            cout << "default constructor called" << endl;
        }

        ~Class() {
            cout << "destructor called" << endl;
        }
};

int main() {
    Class object(); // Incorrect syntax
}

Fungsi utama() percubaan untuk mencipta objek Kelas kelas. Walau bagaimanapun, ia tidak memanggil pembina seperti yang dijangkakan.

Punca

Isunya terletak pada sintaks yang salah yang digunakan dalam pengisytiharan objek:

Class object();

Baris ini mengisytiharkan fungsi bernama object() yang mengembalikan objek Class. Untuk mencipta objek Kelas kelas dengan betul, kita harus menggunakan sintaks berikut:

Class object;

Penyelesaian

Dengan mengalih keluar kurungan selepas nama kelas, kita betul-betul mengisytiharkan objek Kelas kelas. Objek ini akan memanggil pembina lalai dengan betul, seperti yang dijangkakan.

Nota Tambahan

  • Huraian yang paling menjengkelkan ialah fenomena dalam C di mana kod boleh ditafsirkan sebagai sama ada pengisytiharan fungsi atau pengisytiharan kelas bergantung pada konteks.
  • Untuk mengelakkan kekaburan ini, adalah disyorkan untuk ikut peraturan praktikal: "Sentiasa letakkan kurungan selepas nama kelas untuk menunjukkan panggilan pembina."

Atas ialah kandungan terperinci Bagaimanakah Saya Menghidupkan Objek Kelas C dengan Betul dan Menggunakan Pembinanya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn