Pertanyaan yang ditandai dengan 'aturan tiga'

Aturan tiga (juga dikenal sebagai Tiga Besar atau Tiga Besar) adalah aturan praktis dalam C ++, yang menyatakan bahwa jika suatu kelas mendefinisikan salah satu dari yang berikut, ia harus secara eksplisit mendefinisikan ketiganya: destruktor, copy constructor, operator penugasan
8
balasan

Apa aturan tiga?

Apa artinya menyalin objek? Apa itu copy constructor dan pernyataan penugasan copy? Kapan saya harus menyatakannya sendiri? Bagaimana saya bisa mencegah penyalinan objek saya?
set 13 Nov '10 jam 16:27
8
balasan

Aturan Tiga menjadi Aturan Lima dengan C ++ 11?

Jadi, setelah melihat ceramah yang luar biasa ini pada tautan nilai, saya berpikir bahwa setiap kelas akan mendapat manfaat dari "konstruktor relokasi", mengedit template <Class T> MyClass (T lainnya) dan, tentu saja, "operator relokasi tujuan ...
atur 24 Jan '11 jam 4:51 sore
3
balasan

Pengecualian untuk aturan tiga?

Saya membaca banyak tentang C ++ Rule of Three. Banyak yang bersumpah dengan ini. Tetapi ketika aturan ditunjukkan, itu hampir selalu mencakup kata "biasanya", "mungkin" atau "mungkin", yang menunjukkan adanya pengecualian. Saya belum melihat banyak diskusi tentang apa yang mungkin terjadi ...
atur 21 Maret '13 pada 23:27
3
balasan

Penugasan dan idiom aman "salin dan tukar"

Saya belajar C ++, dan baru-baru ini saya menemukan (di sini di stack overflow) tentang idiom dengan menyalin dan mengganti, dan saya punya beberapa pertanyaan tentang hal itu. Jadi, anggaplah saya memiliki kelas berikut, menggunakan idiom dengan salin dan ganti, misalnya: kelas Foo {p ...
ditetapkan pada 06 Mei 11 jam 3:25
5
balasan

Objek C ++ Salin Pembuat + Pointer

Saya mencoba mempelajari "tiga besar" dalam C ++ .. Saya berhasil membuat program yang sangat sederhana untuk "tiga besar" .. tapi saya tidak yakin bagaimana menggunakan pointer ke objek. Selanjutnya adalah upaya pertama saya. Saya ragu ketika menulis ini ... ...
ditetapkan pada 18 September '10 jam 8:07
2
balasan

Memahami -WeffС ++

Pertimbangkan program berikut: #include <string> struct S {S () {} private: void * ptr = nullptr; std :: string str = ""; }; int main () {} Ini, jika dikompilasi dengan -Weffc ++ pada GCC 4.7.1, akan memuntahkan: peringatan: 'struct S' memiliki po ...
ditetapkan pada 16 Juli '12 pukul 3:50
3
balasan

Menyimpan objek dalam vektor STL adalah sekumpulan metode minimal.

Apa itu "struktur minimal" (metode yang diperlukan) dari objek yang kompleks (dengan data internal eksplisit) yang ingin saya simpan dalam wadah STL, misalnya. <vektor>? Untuk asumsi saya (contoh objek Doit yang kompleks): #sertakan <...
diatur 23 Maret '10 pukul 18:30
2
balasan

Bagaimana dengan copy-constructor jika kelas mengandung destructor yang dideklarasikan pengguna?

Standar dalam bagian 12.8 / 7 menyatakan: Jika definisi kelas tidak secara eksplisit menyatakan salinan konstruktor, satu dinyatakan secara implisit. Jika definisi kelas menyatakan konstruktor relokasi atau operator transfer relokasi, konstruktor yang dinyatakan secara implisit
ditetapkan pada tanggal 1 November. '14 jam 11:23
0
balasan

Haruskah antarmuka c ++ mematuhi aturan 5?

Apa cara yang benar untuk mendeklarasikan metode pembuatan instance saat mendefinisikan kelas antarmuka? Untuk alasan yang jelas, kelas dasar abstrak harus memiliki destruktor virtual. Namun, peringatan kompilasi berikut: "InterfaceCla ...
ditetapkan pada 22 April '18 jam 4:49
5
balasan

Saat ditugaskan ke C ++, apakah objek yang telah kami tetapkan dihancurkan?

Apakah fragmen kode berikut bocor? Jika tidak, di mana dua objek yang dihancurkan yang dibangun di foobar ()? kelas B {int * mpI; publik: B () {mpI = int baru; } ~ B () {delete mpI; }}; membatalkan foobar () {b b; b = b (); // cau ...
atur 03 Des '10 jam 3:50
1
jawabannya

Aturan 3 Deviasi anggota default di C ++ 11

Sesuai dengan tabel terkenal di bawah ini, pembuatan otomatis konstruktor penyalin salinan default dan tujuan penyalinan sudah usang dalam C ++ 11, ketika satu atau lebih instance salinan, copy constructor dan destruc ...
ditetapkan pada 08 Juni 17 pukul 11:47
2
balasan

Apakah ada alat analisis statis yang menguji aturan 3 (atau aturan 5 C ++ 11)

Saat ini saya sedang mengerjakan basis kode yang dibangun berdasarkan pasir. Ada banyak kelas di perpustakaan yang seharusnya diuji yang me>
ditetapkan pada 07 Mei '13 pukul 18:57
3
balasan

Aturan Tiga dalam C ++

Saya membaca bahwa "Aturan Tiga", Apa aturan ketiganya?, Terlihat seperti ini: Jika Anda perlu secara eksplisit mendeklarasikan destruktor, menyalin konstruktor, atau menetapkan salinan operator, Anda mungkin perlu secara eksplisit menyatakan ketiganya. Pertanyaan saya adalah: ...
ditetapkan pada 14 Juni '12 pada 1:47
1
jawabannya

aturan lima dan fungsi jarak jauh secara implisit

Dalam pemahaman saya, aturan lima adalah aturan aturan. Meskipun, saya telah melihat bahwa kompiler dalam beberapa skenario dapat menyembunyikan fungsi, secara implisit. Sebagai contoh, ketika mendefinisikan move-ctor, copy / copy ctor akan dihapus. Saya ingin tahu apakah ada keributan ...
atur 25 Sep. '17 jam 13:27