Pitanja označena s "pravilo tri"

Pravilo tri (poznato i kao Big Three ili Big Three) je pravilo u C ++, koji kaže da ako klasa definira jedno od sljedećeg, ona mora eksplicitno definirati sva tri: destructor, konstruktor kopiranja, operator dodjeljivanja.
8
odgovor

Što je pravilo tri?

Što znači kopiranje objekta? Što je konstruktor kopiranja i izjava o dodjeli kopiranja? Kada ih moram osobno proglasiti? Kako mogu spriječiti kopiranje objekata?
postavljen 13. studenog '10 u 16:27
8
odgovor

Pravilo tri postaje pravilo pet s C ++ 11?

Dakle, nakon gledanja ovog predivnog predavanja o rvalue linkovima, pomislio sam da će svaka klasa imati koristi od takvog "konstruktora preseljenja", urediti predložak <Class T> MyClass (T drugo) i, naravno, "operater preseljenja odredišta ...
set Jan 24 '11 u 16:51
3
odgovor

Iznimka od pravila tri?

Puno sam čitao o C ++ pravilu tri. Mnogi se zaklinju u ovo. Ali kada je navedeno pravilo, gotovo uvijek uključuje riječ "obično", "vjerojatno" ili "moguće", što ukazuje na prisutnost iznimaka. Nisam vidio mnogo rasprava o tome što bi ti ekskluzivni mogli biti ...
postavili 21. ožujka u 23:27
3
odgovor

Sigurno dodjeljivanje i idiom "kopiraj i mijenjaj"

Ja učim C ++, a nedavno sam saznala (ovdje u preljevu stogova) o idiomu s kopiranjem i zamjenom, i imam nekoliko pitanja o tome. Dakle, pretpostavimo da imam sljedeću klasu, koristeći idiom s kopijom i zamjenom, na primjer: klasa Foo {p ...
postavljen 6. svibnja '11 u 3:25
5
odgovor

Objekt C ++ Kopiraj konstruktor + pokazivač

Pokušavam naučiti "velike tri" u C ++ .. Uspio sam napraviti vrlo jednostavan program za "veliku trojku" .. ali nisam siguran kako koristiti pokazivač na objekt. Sljedeći je moj prvi pokušaj. Sumnjam kad sam ovo napisao ... ...
18. rujna '10 u 8:07
2
odgovor

Razumijevanje -Weff ++

Razmotrite sljedeći program: #include <string> struct S {S () {} private: void * ptr = nullptr; std :: string str = ""; }; int main () {} Ovo, ako je kompilirano s -Weffc ++ na GCC 4.7.1, ispljunut će: warning: 'struct S' ima poi ...
postavljen je 16. srpnja '12 u 3:50
3
odgovor

Pohranjivanje objekata u STL vektor je minimalan skup metoda.

Što je "minimalna struktura" (potrebne metode) složenog objekta (s eksplicitnim internim podacima) koje želim pohraniti u STL kontejneru, na primjer. <Vector>? Za moje pretpostavke (primjer složenog objekta Doit): #include <...
postavljen je 23. ožujka u 18:30
2
odgovor

Što s copy-constructor ako klasa sadrži korisnički deklarirani destructor?

Standard u odjeljku 12.8 / 7 kaže: Ako definicija klase eksplicitno ne deklarira kopiju konstruktora, jedan se izriče implicitno. Ako definicija klase proglašava konstruktora premještanja ili operatora prijenosa premještanja, implicitno deklarirani konstruktor ...
postavljen na 01 Nov. 14 u 11:23
0
odgovor

Treba li c ++ sučelje poštivati ​​pravilo 5?

Koji je ispravan način deklariranja metoda stvaranja primjera kada se definira klasa sučelja? Iz očiglednih razloga, apstraktne osnovne klase trebaju imati virtualni destruktor. Međutim, sljedeće upozorenje kompilacije: "InterfaceCla ...
postavljeno 22. travnja '18 u 4:49
5
odgovor

Kada je dodijeljen C ++, je li objekt koji smo dodijelili uništen?

Je li sljedeći fragment koda procurio? Ako ne, gdje su dva objekta uništena koja su ugrađena u foobar ()? klasa B {int * mpI; public: B () {mpI = novi int; } B () {brisanje mpI; }}; void foobar () {b b; b = b (); // cau ...
set 03 Dec '10 u 3:50
1
odgovor

Pravilo 3 Odstupanje zadanog člana u C ++ 11

U skladu s dobro poznatom tablicom u nastavku, automatsko generiranje zadanog konstruktora kompajlera kopiranja i odredišta kopiranja je zastarjelo u C ++ 11, kada jedna ili više kopija, konstruktor kopiranja i destrukcija ...
postavljen 8. lipnja 2006. u 11:47
2
odgovor

Postoje li alati za statičku analizu koji testiraju pravilo 3 (ili pravilo 5 C ++ 11)

Trenutno radim na bazi kodova izgrađenih na bazi pijeska. Postoje mnoge klase u navodno testiranim knjižnicama koje krše pravilo 3. \ t Većina proglašava nebitan destruktor, ali nedostaje li im ...
postavljen 7. svibnja '13 u 18:57
3
odgovor

Pravilo tri u C ++

Pročitao sam da "pravilo tri", što je pravilo tri ?, izgleda ovako: Ako trebate izričito proglasiti destruktor, konstruktor kopiranja ili dodijeliti kopiju operatora, vjerojatno morate izričito proglasiti sve tri. Moje pitanje je: ...
postavljen 14. lipnja '12 u 1:47
1
odgovor

pravilo pet i implicitno udaljene funkcije

Po mom shvaćanju, pravilo pet je pravilo pravila. Iako sam vidio da prevodilac u nekim scenarijima može sakriti funkcije, implicitno. Na primjer, prilikom definiranja rotora kretanja, kopiranje / kopiranje će se izbrisati. Htio bih znati postoji li neka scena ...
postavljeno 25. rujna. '17 u 13:27
5
odgovor

Da li kršim pravilo tri?

Nedavno sam pročitao Pravilo trojice i pitam se je li to slomio? U mojoj GUI aplikaciji, klase kao što su MainFrame, Sučelje, Circuit, Breadboard, itd. (nazivi klasa su približni), imaju po jednu kopiju svakog od njih. U njihovom konstitutivnom ...
04. veljače set '12 u 10:09