Rumah > pembangunan bahagian belakang > C++ > Bolehkah saya Menggunakan Pembolehubah Ahli sebagai Argumen Lalai dalam Kaedah C?

Bolehkah saya Menggunakan Pembolehubah Ahli sebagai Argumen Lalai dalam Kaedah C?

Mary-Kate Olsen
Lepaskan: 2024-11-14 14:37:01
asal
662 orang telah melayarinya

Can I Use Member Variables as Default Arguments in C   Methods?

Menggunakan Pembolehubah Ahli sebagai Argumen Lalai dalam C

Pengenalan

Apabila mencipta kelas dengan kaedah yang mengambil berbilang argumen, ia boleh memberi manfaat untuk membuat beberapa hujah pilihan. Dengan menggunakan ciri argumen lalai, anda boleh menetapkan nilai lalai untuk argumen yang boleh digunakan apabila tiada nilai diberikan oleh kod klien.

Isu: Menggunakan Pembolehubah Ahli Bukan Statik sebagai Argumen Lalai

Dalam kes anda, anda cuba menggunakan pembolehubah ahli (initPos) sebagai hujah lalai untuk fungsi ahli MoveTo anda. Walau bagaimanapun, pengkompil mengeluarkan ralat yang menunjukkan penggunaan tidak sah ahli data bukan statik.

Analisis Masalah

Pembolehubah ahli tidak boleh diakses dalam skop kaedah secara lalai, kerana ia dianggap sebahagian keadaan objek dan bukan konteks kaedah. Akibatnya, secara lalai argumen dalam fungsi ahli hanya boleh bergantung pada elemen skop dalam kelas atau global.

Penyelesaian: Melebihkan Kaedah

Untuk menyelesaikan isu ini, anda perlu menggunakan kaedah lebih muatan . Kelebihan kaedah membolehkan anda mencipta berbilang versi kaedah yang sama dengan tandatangan yang berbeza. Begini cara untuk melaksanakannya dalam kod anda:

// Object.h
class Object
{
public:
    ...
    void MoveTo(double speed);
    void MoveTo(double speed, Point position);

protected:
    Point initPos; 
    Point currPos;

};
Salin selepas log masuk
// Object.c
void Object::MoveTo(double speed)
{
    MoveTo(speed, initPos);
}

void Object::MoveTo(double speed, Point position)
{
    // Everything is done here.
}
Salin selepas log masuk

Dengan mentakrifkan dua versi kaedah MoveTo, anda boleh memberikan hujah lalai dengan berkesan tanpa bergantung pada pembolehubah ahli secara langsung. Kaedah MoveTo(double) memanggil kaedah MoveTo(double, Point) dengan nilai initPos sebagai hujah kedua, membolehkan anda mengekalkan fungsi yang diingini dan mengelakkan ralat pengkompil.

Atas ialah kandungan terperinci Bolehkah saya Menggunakan Pembolehubah Ahli sebagai Argumen Lalai dalam Kaedah C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan