[C++ von { bis }] 24 Kopieren verboten!

preview_player
Показать описание
Nicht immer will man Objekte kopierbar machen. Dummerweise generiert C++ unter anderem den Copy-Konstruktor automatisch. Man muss daher ein paar Kleinigkeiten beachten, wenn man das verhindern will. C++11 bietet hier was neues: man kann solche Funktionen mittlerweile nicht nur private deklarieren, sondern auch explizit als gelöscht markieren, um den Compiler anzuweisen, diese nicht zu generieren.
---
Рекомендации по теме
Комментарии
Автор

Diese von dir provozierten Speicherfehler habe ich erst gar nicht bekommen weil ich mir dein "Objekte an Funktion als const Referenz übergeben" angeeignet und automatisch übernommen habe. Ich musste den Code erst "verfälschen" um das ganze nachvollziehen zu können :D
Aber super Erklärungen, vielen Dank :)

falscherkim
Автор

7:02 in der Initialisierungsliste des eigentlich nicht sichtbaren Copykonstruktors
": mbuffer(other.mBuffer), mSize(other.mSize)" wird für jedes Element der Copykonstruktor aufgerufen ?
Findet da nicht einfach eine Zuweisung statt ? mbuffer = other.mBuffer und mSize = other.mSize
mbuffer und mSize haben auch einen Copykonstruktor ? Oder war das ein Versprecher ?

Ich erinnere mich, dass ich in vielen fremden Quelltexten im Block sowas wie
{ this.mbuffer = other.mBuffer und this.mSize = other.mSize }
gesehen habe.

tobiaskarl