Jadual Kandungan
Gunakan kaedah getter dan setter untuk mengakses ahli data
tatabahasa
Contoh
Output
Mengakses fungsi ahli dari dalam fungsi lain
Gunakan kelas rakan
Gunakan fungsi rakan
KESIMPULAN
Rumah pembangunan bahagian belakang C++ Program C++ mengakses ahli peribadi kelas

Program C++ mengakses ahli peribadi kelas

Sep 08, 2023 am 08:17 AM
c akses ahli persendirian

Program C++ mengakses ahli peribadi kelas

Ahli persendirian kelas hanya boleh diakses oleh ahli kelas. Ini dilakukan untuk mengekalkan prinsip enkapsulasi berorientasikan objek, memastikan data dan fungsi yang berkaitan disimpan dalam satu unit dan hanya boleh diakses daripada ahli kelas. C++ mempunyai tiga kawalan akses berbeza untuk menentukan keterlihatan ahli kelas. Tiga aksara kawalan akses ini ialah −

  • Public − Jika ahli kelas mempunyai keterlihatan awam, maka ahli ini boleh diakses dari mana-mana kelas lain.

  • Private − Ahli kelas dengan penglihatan peribadi hanya boleh diakses dari dalam kelas.

  • Dilindungi − ahli kelas yang dilindungi boleh diakses daripada with9dalam kelas atau daripada subkelasnya sahaja.

Untuk artikel ini, kami hanya akan menumpukan pada mengakses ahli persendirian kelas.

Gunakan kaedah getter dan setter untuk mengakses ahli data

Fungsi Getter dan setter digunakan untuk mengakses dan mengubah suai ahli peribadi kelas. Seperti namanya, fungsi getter mengembalikan ahli data, manakala fungsi setter digunakan untuk "set" atau mengubah suai ahli data. Kami menggunakan dua contoh untuk lebih memahami konsep ini, tetapi sebelum itu, sintaks asas diberikan di bawah.

tatabahasa

Getter/Fungsi pengakses −

private:
   <datatype> value;
public:
   <datatype> getterFunction() {
     return <datatype> this->value;
   }
Salin selepas log masuk

Fungsi penetap/Mutator−

private:
   <datatype> value;
public:
   void setterFunction(<datatype> _value) {
     this->value = _value;
   }
Salin selepas log masuk
Terjemahan bahasa Cina bagi

Contoh

ialah:

Contoh

#include <iostream>

using namespace std;

class Test{
   private:
      int value;
   public:
      //the getter function
      int getValue() {
         return this->value;
      }
      //the setter function
      void setValue(int _value) {
         this->value = _value;
      }
};

int main(){
   Test test;
   test.setValue(15);
   cout << "The value we set is: " << test.getValue() << endl;
   return 0;
}
Salin selepas log masuk

Output

The value we set is: 15
Salin selepas log masuk

Mengakses fungsi ahli dari dalam fungsi lain

Situasinya sama apabila kita mengakses fungsi ahli persendirian. Kita perlu mengaksesnya dari dalam kaedah ahli kelas dengan cara yang sama seperti kita mengakses ahli data. Kita boleh menggunakan penunjuk "this" untuk mengelakkan konflik nama.

tatabahasa

private:
   <returntype> function_name(params) {};
public:
   <returntype> another_function(params) {
     <datatype> var = this->function_name(arguments);
   }
Salin selepas log masuk

Fungsi yang memanggil fungsi ahli persendirian harus diisytiharkan awam. Fungsi awam hanya akan dilaksanakan apabila dipanggil daripada objek kelas ini.

Terjemahan bahasa Cina bagi

Contoh

ialah:

Contoh

#include <iostream>

using namespace std;

class Test{
   private:
      int value;
      //multiplies the member value by 10
      void multiplyValue() {
         this->value = this->value * 10;
      }
   public:
      //the getvalue function calls the multiply value function
      int multiplyAndGetValue() {
         this->multiplyValue();
         return this->value;
      }
      //the setter function
      void setValue(int _value) {
         this->value = _value;
      }
};

int main(){
   Test test;
   test.setValue(15);
   cout << "The value after setting and multiplying is: " << test.multiplyAndGetValue() << endl;
   return 0;
}
Salin selepas log masuk

Output

The value after setting and multiplying is: 150
Salin selepas log masuk

Gunakan kelas rakan

Dalam C++, kelas rakan ialah kelas yang boleh mengakses ahli peribadi dan dilindungi kelas lain yang tidak kelihatan kepada kelas lain. Untuk mengisytiharkan kelas sebagai rakan kelas lain, gunakan kata kunci ‘friend’. Mari lihat bagaimana ia berfungsi.

tatabahasa

class A{
   private:
     .....
   friend class B;
};

class B{
   //class body
};
Salin selepas log masuk
Terjemahan bahasa Cina bagi

Contoh

ialah:

Contoh

#include <iostream>

using namespace std;

class Test1{
   private:
      int value;
   public:
      Test1(int _value) {
         this->value = _value;
      }
      //we declare another class as a friend
      friend class Test2;
};

class Test2{
  public:
   //displays the value of the other class object
   void display(Test1 &t) {
      cout << "The value of Test1 object is: " << t.value;
   }
};

int main(){
   //creating two class objects of the two classes
   Test1 test1(15);
   Test2 test2;

   //calling the friend class function
   test2.display(test1);
   return 0;
}
Salin selepas log masuk

Output

The value of Test1 object is: 15
Salin selepas log masuk

Gunakan fungsi rakan

Dalam C++, fungsi rakan adalah serupa dengan kelas rakan. Di sini, kita boleh mengisytiharkan fungsi tertentu yang bukan ahli kelas sebagai "rakan" dan ia akan mendapat akses kepada ahli peribadi kelas. Mari kita lihat sintaks cara mentakrifkan fungsi sebagai "友元".

tatabahasa

class A{
   private:
     .....
   friend <return_type> function_name(params);
};

<return_type> function_name(params) {
   //function body
}
Salin selepas log masuk
Terjemahan bahasa Cina bagi

Contoh

ialah:

Contoh

#include <iostream>

using namespace std;

class Test1{
   private:
      int value;
   public:
      Test1(int _value) {
         this->value = _value;
      }
      //we declare a friend function
      friend void display(Test1);
};

void display(Test1 t) {
   cout << "The value of Test1 object is: " << t.value;
}

int main(){
   //creating two class objects of the two classes
   Test1 test1(55);
   //calling the friend class function
   display(test1);
   return 0;
}
Salin selepas log masuk

Output

The value of Test1 object is: 55
Salin selepas log masuk

KESIMPULAN

Apabila kita mengakses ahli data peribadi kelas, sebaiknya gunakan fungsi accessor/getter dan modifier/setter. Ini adalah cara paling selamat untuk mengakses ahli data kelas. Satu perkara yang perlu sentiasa diingati ialah fungsi yang mengakses ahli persendirian harus diisytiharkan awam. Fungsi rakan tidak tersedia dalam bahasa berorientasikan objek lain kerana ini tidak selalu mengekalkan sifat enkapsulasi berorientasikan objek. Hubungan rakan adalah tidak simetri Jika kelas A mengisytiharkan kelas B sebagai rakan, maka kelas B akan mempunyai akses kepada semua ahli A, tetapi A tidak akan dapat mengakses semua ahli peribadi B.

Atas ialah kandungan terperinci Program C++ mengakses ahli peribadi kelas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah pemalar dalam bahasa C Bolehkah anda berikan contoh? Apakah pemalar dalam bahasa C Bolehkah anda berikan contoh? Aug 28, 2023 pm 10:45 PM

Pemalar juga dipanggil pembolehubah dan apabila ditakrifkan, nilainya tidak berubah semasa pelaksanaan program. Oleh itu, kita boleh mengisytiharkan pembolehubah sebagai pemalar merujuk nilai tetap. Ia juga dipanggil teks. Pemalar mesti ditakrifkan menggunakan kata kunci Const. Sintaks Sintaks pemalar yang digunakan dalam bahasa pengaturcaraan C adalah seperti berikut - consttypeVariableName; ,34, 4567 Pemalar titik terapung - Contoh: 0.0, 156.89, 23.456 Pemalar perlapanan dan Perenambelasan - Contoh: Hex: 0x2a, 0xaa.. Octal

iOS 17: Cara mengawal apl yang boleh mengakses foto anda iOS 17: Cara mengawal apl yang boleh mengakses foto anda Sep 13, 2023 pm 09:09 PM

Dalam iOS17, Apple mempunyai lebih kawalan ke atas perkara yang boleh dilihat oleh apl dalam foto. Teruskan membaca untuk mengetahui cara mengurus akses apl mengikut apl. Dalam iOS, pemilih foto dalam apl Apple membolehkan anda berkongsi foto tertentu dengan apl itu, manakala pustaka foto anda yang lain kekal peribadi. Apl mesti meminta akses kepada keseluruhan pustaka foto anda dan anda boleh memilih untuk memberikan akses berikut kepada apl: Akses Terhad – Apl hanya boleh melihat imej yang anda boleh pilih, yang boleh anda lakukan pada bila-bila masa dalam apl atau dengan pergi ke Tetapan &gt ;Privasi & Keselamatan&gt;Foto untuk melihat imej yang dipilih. Akses penuh - Apl boleh melihat foto

VSCode dan VS C++ IntelliSense tidak berfungsi atau mengambil perpustakaan VSCode dan VS C++ IntelliSense tidak berfungsi atau mengambil perpustakaan Feb 29, 2024 pm 01:28 PM

Kod VS dan Visual Studio C++ IntelliSense mungkin tidak dapat mengambil perpustakaan, terutamanya apabila bekerja pada projek besar. Apabila kami menuding pada #Include&lt;wx/wx.h&gt;, kami melihat mesej ralat "Tidak boleh Membuka fail sumber 'string.h'" (bergantung pada "wx/wx.h") dan kadangkala, Fungsi autolengkap tidak bertindak balas. Dalam artikel ini kita akan melihat perkara yang boleh anda lakukan jika VSCode dan VSC++ IntelliSense tidak berfungsi atau mengekstrak perpustakaan. Mengapa Intellisense saya tidak berfungsi dalam C++? Apabila bekerja dengan fail besar, kadangkala IntelliSense

Bagaimana untuk mengakses medan JSON, tatasusunan dan objek bersarang JSONNode di Java? Bagaimana untuk mengakses medan JSON, tatasusunan dan objek bersarang JSONNode di Java? Aug 30, 2023 pm 11:05 PM

JsonNode ialah model pokok JSON Jackson yang boleh membaca JSON ke dalam contoh JsonNode dan menulis JsonNode ke dalam JSON. Kita boleh menggunakan Jackson untuk membaca JSON ke dalam JsonNode dengan mencipta contoh ObjectMapper dan memanggil kaedah readValue(). Kita boleh mengakses medan, tatasusunan atau objek bersarang menggunakan kaedah get() kelas JsonNode. Kita boleh menggunakan kaedah asText() untuk mengembalikan perwakilan rentetan yang sah dan menukar nilai nod kepada Javaint menggunakan kaedah asInt() kelas JsonNode. Dalam contoh di bawah kita boleh mengakses Json

Betulkan kod ralat Xbox 8C230002 Betulkan kod ralat Xbox 8C230002 Feb 27, 2024 pm 03:55 PM

Adakah anda tidak dapat membeli atau menonton kandungan pada Xbox anda kerana kod ralat 8C230002? Sesetengah pengguna terus mendapat ralat ini apabila cuba membeli atau menonton kandungan pada konsol mereka. Maaf, terdapat masalah dengan perkhidmatan Xbox. Cuba lagi nanti. Untuk bantuan dengan isu ini, lawati www.xbox.com/errorhelp. Kod Status: 8C230002 Kod ralat ini biasanya disebabkan oleh masalah pelayan atau rangkaian sementara. Walau bagaimanapun, mungkin terdapat sebab lain, seperti tetapan privasi akaun anda atau kawalan ibu bapa, yang mungkin menghalang anda daripada membeli atau melihat kandungan tertentu. Betulkan Kod Ralat Xbox 8C230002 Jika anda menerima kod ralat 8C semasa cuba menonton atau membeli kandungan pada konsol Xbox anda

Program rekursif untuk mencari elemen minimum dan maksimum tatasusunan dalam C++ Program rekursif untuk mencari elemen minimum dan maksimum tatasusunan dalam C++ Aug 31, 2023 pm 07:37 PM

Kami mengambil tatasusunan integer Arr[] sebagai input. Matlamatnya adalah untuk mencari elemen terbesar dan terkecil dalam tatasusunan menggunakan kaedah rekursif. Memandangkan kami menggunakan rekursi, kami akan mengulangi keseluruhan tatasusunan sehingga kami mencapai panjang = 1 dan kemudian mengembalikan A[0], yang membentuk huruf asas. Jika tidak, elemen semasa dibandingkan dengan nilai minimum atau maksimum semasa dan nilainya dikemas kini secara rekursif untuk elemen berikutnya. Mari kita lihat pelbagai senario input dan output untuk −Input −Arr={12,67,99,76,32}; Nilai maksimum dalam tatasusunan: 99 Penjelasan &mi

Akses metadata pelbagai fail audio dan video menggunakan Python Akses metadata pelbagai fail audio dan video menggunakan Python Sep 05, 2023 am 11:41 AM

Kami boleh mengakses metadata fail audio menggunakan Mutagen dan modul eyeD3 dalam Python. Untuk metadata video kita boleh menggunakan filem dan perpustakaan OpenCV dalam Python. Metadata ialah data yang menyediakan maklumat tentang data lain, seperti data audio dan video. Metadata untuk fail audio dan video termasuk format fail, resolusi fail, saiz fail, tempoh, kadar bit, dsb. Dengan mengakses metadata ini, kami boleh mengurus media dengan lebih cekap dan menganalisis metadata untuk mendapatkan beberapa maklumat berguna. Dalam artikel ini, kita akan melihat beberapa perpustakaan atau modul yang disediakan oleh Python untuk mengakses metadata fail audio dan video. Akses metadata audio Sesetengah perpustakaan untuk mengakses metadata fail audio adalah - menggunakan mutagenesis

Bagaimana untuk menyelesaikan masalah tidak dapat diakses selepas Tomcat menggunakan pakej perang Bagaimana untuk menyelesaikan masalah tidak dapat diakses selepas Tomcat menggunakan pakej perang Jan 13, 2024 pm 12:07 PM

Bagaimana untuk menyelesaikan masalah bahawa Tomcat tidak boleh berjaya mengakses pakej perang selepas menggunakan ia memerlukan contoh kod khusus Sebagai pelayan Web Java yang digunakan secara meluas, Tomcat membenarkan pemaju untuk membungkus aplikasi Web mereka sendiri yang dibangunkan ke dalam fail perang untuk penggunaan. Walau bagaimanapun, kadangkala kita mungkin menghadapi masalah tidak berjaya mengakses pakej perang selepas menggunakannya. Ini mungkin disebabkan oleh konfigurasi yang salah atau sebab lain. Dalam artikel ini, kami akan menyediakan beberapa contoh kod konkrit yang menangani dilema ini. 1. Semak perkhidmatan Tomcat

See all articles