Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

Fungsi teman C++ dan Kelas teman

Fungsi teman C++ dan Kelas teman

Dalam tutorial ini, kita akan belajar membuat fungsi teman dan kelas teman di C++ dengan bantuan contoh.

Penyembunyikan data adalah konsep dasar pemrograman berorientasi objek. Ini membatasi akses anggota pribadi dari luar kelas.

Demikian pula, anggota yang dilindungi hanya dapat diakses oleh kelas turunan dan tidak dapat diakses dari luar. Misalnya,

class MyClass {
    private:
        int member1;
}

int main() {
    MyClass obj;

    // Error! Cannot access private members from here.
    obj.member1 = 5;
}

Namun, ada fitur di C++ yang disebut fungsi teman yang melanggar aturan ini dan mengizinkan kita mengakses fungsi anggota dari luar kelas.

Demikian pula, ada kelas teman juga, yang akan kita pelajari nanti dalam tutorial ini.


Fungsi teman di C++

Fungsi teman dapat mengakses pribadi dan dilindungi data dari sebuah kelas. Kami mendeklarasikan fungsi teman menggunakan friend kata kunci di dalam badan kelas.

class className {
    ... .. ...
    friend returnType functionName(arguments);
    ... .. ...
}

Contoh 1:Kerja Fungsi teman

// C++ program to demonstrate the working of friend function

#include <iostream>
using namespace std;

class Distance {
    private:
        int meter;
        
        // friend function
        friend int addFive(Distance);

    public:
        Distance() : meter(0) {}
        
};

// friend function definition
int addFive(Distance d) {

    //accessing private members from the friend function
    d.meter += 5;
    return d.meter;
}

int main() {
    Distance D;
    cout << "Distance: " << addFive(D);
    return 0;
}

Keluaran

Distance: 5

Di sini, addFive() adalah fungsi teman yang dapat mengakses keduanya pribadi dan publik anggota data.

Meskipun contoh ini memberi kita gambaran tentang konsep fungsi teman, itu tidak menunjukkan penggunaan yang berarti.

Penggunaan yang lebih bermakna akan beroperasi pada objek dari dua kelas yang berbeda. Saat itulah fungsi teman bisa sangat membantu.


Contoh 2:Tambahkan Anggota dari Dua Kelas Berbeda

// Add members of two different classes using friend functions

#include <iostream>
using namespace std;

// forward declaration
class ClassB;

class ClassA {
    
    public:
        // constructor to initialize numA to 12
        ClassA() : numA(12) {}
        
    private:
        int numA;
        
         // friend function declaration
         friend int add(ClassA, ClassB);
};

class ClassB {

    public:
        // constructor to initialize numB to 1
        ClassB() : numB(1) {}
    
    private:
        int numB;
 
        // friend function declaration
        friend int add(ClassA, ClassB);
};

// access members of both classes
int add(ClassA objectA, ClassB objectB) {
    return (objectA.numA + objectB.numB);
}

int main() {
    ClassA objectA;
    ClassB objectB;
    cout << "Sum: " << add(objectA, objectB);
    return 0;
}

Keluaran

Sum: 13

Dalam program ini, ClassA dan ClassB telah mendeklarasikan add() sebagai fungsi teman. Dengan demikian, fungsi ini dapat mengakses pribadi data dari kedua kelas.

Satu hal yang perlu diperhatikan di sini adalah fungsi teman di dalam ClassA menggunakan ClassB . Namun, kami belum mendefinisikan ClassB pada titik ini.

// inside classA 
friend int add(ClassA, ClassB);

Agar ini berfungsi, kita memerlukan deklarasi penerusan ClassB dalam program kami.

// forward declaration
class ClassB;

Kelas teman di C++

Kita juga dapat menggunakan Kelas teman di C++ menggunakan friend kata kunci. Misalnya,

class ClassB;

class ClassA {
   // ClassB is a friend class of ClassA
   friend class ClassB;
   ... .. ...
}

class ClassB {
   ... .. ...
}

Ketika sebuah kelas dinyatakan sebagai kelas teman, semua fungsi anggota kelas teman menjadi fungsi teman.

Sejak ClassB adalah kelas teman, kita dapat mengakses semua anggota ClassA dari dalam ClassB .

Namun, kami tidak dapat mengakses anggota ClassB dari dalam ClassA . Karena hubungan pertemanan di C++ hanya diberikan, tidak diambil.


Contoh 3:Kelas teman C++

// C++ program to demonstrate the working of friend class

#include <iostream>
using namespace std;

// forward declaration
class ClassB;

class ClassA {
    private:
        int numA;

        // friend class declaration
        friend class ClassB;

    public:
        // constructor to initialize numA to 12
        ClassA() : numA(12) {}
};

class ClassB {
    private:
        int numB;

    public:
        // constructor to initialize numB to 1
        ClassB() : numB(1) {}
    
    // member function to add numA
    // from ClassA and numB from ClassB
    int add() {
        ClassA objectA;
        return objectA.numA + numB;
    }
};

int main() {
    ClassB objectB;
    cout << "Sum: " << objectB.add();
    return 0;
}

Keluaran

Sum: 13

Di sini, ClassB adalah kelas teman ClassA . Jadi, ClassB memiliki akses ke anggota classA .

Dalam ClassB , kami telah membuat fungsi add() yang mengembalikan jumlah numA dan numB .

Sejak ClassB adalah kelas teman, kita dapat membuat objek ClassA di dalam ClassB .


Bahasa C

  1. C# Kelas dan Objek
  2. C# kelas abstrak dan metode
  3. C# Kelas Parsial dan Metode Parsial
  4. C# kelas dan metode tersegel
  5. Kelas dan Objek C++
  6. Perbedaan antara Struktur dan Kelas:Dijelaskan dengan Contoh C++
  7. Java - Objek dan Kelas
  8. Kelas Penyimpanan di C++
  9. C++ Tanggal dan Waktu
  10. C++ Overloading (Operator dan Fungsi)