Rumah > pembangunan bahagian belakang > C++ > Program C++ mengakses ahli peribadi kelas

Program C++ mengakses ahli peribadi kelas

王林
Lepaskan: 2023-09-08 08:17:05
ke hadapan
1263 orang telah melayarinya

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!

Label berkaitan:
sumber:tutorialspoint.com
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan