Fungsi untuk C ++ struct

93

Biasanya kita dapat mendefinisikan variabel untuk struct C ++, seperti pada

struct foo {
  int bar;
};

Bisakah kita juga mendefinisikan fungsi untuk struct? Bagaimana kita menggunakan fungsi tersebut?

John
sumber
4
Iya. Sama seperti yang Anda lakukan untuk kelas di C ++
DumbCoder

Jawaban:

142

Ya, a structidentik dengan a classkecuali untuk tingkat akses default (berdasarkan anggota dan berdasarkan warisan). (dan makna tambahannya classterbawa saat digunakan dengan template)

Karena itu, setiap fungsionalitas yang didukung oleh sebuah kelas didukung oleh sebuah struct. Anda akan menggunakan metode yang sama seperti yang Anda gunakan untuk kelas.

struct foo {
  int bar;
  foo() : bar(3) {}   //look, a constructor
  int getBar() 
  { 
    return bar; 
  }
};

foo f;
int y = f.getBar(); // y is 3
Luchian Grigore
sumber
37

Struktur dapat memiliki fungsi seperti kelas. Satu-satunya perbedaan adalah bahwa mereka bersifat publik secara default:

struct A {
    void f() {}
};

Selain itu, struct juga dapat memiliki konstruktor dan destruktor.

struct A {
    A() : x(5) {}
    ~A() {}

    private: int x;
};
0x499602D2
sumber