Latest web development tutorials

C ++ modifier akses kelas

C ++ Kelas & Objek C ++ Kelas & Objek

Data pemrograman berorientasi objek tersembunyi merupakan fitur penting, yang mencegah akses langsung ke fungsi anggota internal jenis kelas. Akses dibatasi oleh anggota kelas dalam tubuh utama masing-masing daerah ditandaipublik, swasta, dilindungi untuk menentukan.Kata kunci publik, swasta, dilindungi disebut akses specifier.

Sebuah kelas dapat memiliki lebih dari satu zona bermerek publik, dilindungi atau swasta. Sebelum setiap zona berlabel ditandai area berikutnya memulai atau akhir tubuh kelas sebelum bertemu kurung kanan adalah valid. Pengubah akses default dan anggota kelas pribadi.

class Base {
 
   public:
 
  // public members go here
 
   protected:
 
  // protected members go here
 
   private:
 
  // private members go here
 
};

Publik (public) anggota

anggotamasyarakat dalam program luar kelas dapat diakses.Anda tidak dapat menggunakan fungsi anggota untuk mengatur dan mendapatkan nilai variabel publik, sebagai berikut:

#include <iostream>
 
using namespace std;
 
class Line
{
   public:
      double length;
      void setLength( double len );
      double getLength( void );
};
 
// 成员函数定义
double Line::getLength(void)
{
    return length ;
}
 
void Line::setLength( double len )
{
    length = len;
}
 
// 程序的主函数
int main( )
{
   Line line;
 
   // 设置长度
   line.setLength(6.0); 
   cout << "Length of line : " << line.getLength() <<endl;
 
   // 不使用成员函数设置长度
   line.length = 10.0; // OK: 因为 length 是公有的
   cout << "Length of line : " << line.length <<endl;
   return 0;
}

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

Length of line : 6
Length of line : 10

Pribadi (swasta) anggota

Swasta variabel anggota atau fungsi di luar kelas tidak dapat diakses, bahkan mustahil untuk melihat.Hanya kelas dan fungsi teman dapat mengakses anggota pribadi.

Secara default, semua anggota kelas pribadi. Misalnya, dikelas berikut, lebar adalah anggota pribadi, yang berarti bahwa jika Anda tidak menggunakan pengubah akses, anggota kelas akan diasumsikan anggota pribadi:

class Box
{
   double width;
   public:
      double length;
      void setWidth( double wid );
      double getWidth( void );
};
 

Dalam prakteknya, kita umumnya mendefinisikan data di area pribadi, sebagaimana didefinisikan dalam bidang yang relevan dari fungsi publik untuk luar kelas juga bisa memanggil fungsi-fungsi ini sebagai berikut:

#include <iostream>
 
using namespace std;
 
class Box
{
   public:
      double length;
      void setWidth( double wid );
      double getWidth( void );
 
   private:
      double width;
};
 
// 成员函数定义
double Box::getWidth(void)
{
    return width ;
}
 
void Box::setWidth( double wid )
{
    width = wid;
}
 
// 程序的主函数
int main( )
{
   Box box;
 
   // 不使用成员函数设置长度
   box.length = 10.0; // OK: 因为 length 是公有的
   cout << "Length of box : " << box.length <<endl;
 
   // 不使用成员函数设置宽度
   // box.width = 10.0; // Error: 因为 width 是私有的
   box.setWidth(10.0);  // 使用成员函数设置宽度
   cout << "Width of box : " << box.getWidth() <<endl;
 
   return 0;
}

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

Length of box : 10
Width of box : 10

Perlindungan anggota (dilindungi)

Dilindungi variabel anggota atau fungsi dengan anggota pribadi sangat mirip, tapi sedikit berbeda, untuk melindungi anggota kelas turunan (yaitu, subclass) dapat diakses.

Pada bagian berikutnya, Anda akan belajar pengetahuan kelas turunan dan warisan. Sekarang Anda bisa melihat contoh berikut, kita berasal dari kelas indukBox A subclass smallBox.

Contoh berikut ini mirip dengan contoh sebelumnya, di manalebar dari setiap anggota mungkin berasal anggota kelas akses fungsi smallBox.

#include <iostream>
using namespace std;
 
class Box
{
   protected:
      double width;
};
 
class SmallBox:Box // SmallBox 是派生类
{
   public:
      void setSmallWidth( double wid );
      double getSmallWidth( void );
};
 
// 子类的成员函数
double SmallBox::getSmallWidth(void)
{
    return width ;
}
 
void SmallBox::setSmallWidth( double wid )
{
    width = wid;
}
 
// 程序的主函数
int main( )
{
   SmallBox box;
 
   // 使用成员函数设置宽度
   box.setSmallWidth(5.0);
   cout << "Width of box : "<< box.getSmallWidth() << endl;
 
   return 0;
}

Ketika kode di atas dikompilasi dan dijalankan, menghasilkan hasil sebagai berikut:

Width of box : 5

C ++ Kelas & Objek C ++ Kelas & Objek