「Qtの基本」の編集履歴(バックアップ)一覧はこちら
「Qtの基本」(2014/08/19 (火) 00:11:54) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
**Implicit Sharing
***概要
Qtの多くのクラスでは大きなリソースを最小のコピーで済むようにするため、implicit data sharing を利用しています。
***仕組み
クラスのメンバ変数はデータに対するポインタのみからなります。
クラスのコピーを行う場合にコピーされるのはポインタだけなので、非常に高速に動作します。
ポインタの参照先のデータには参照数をカウントしており、最初にデータが生成されたとき1、その後コピーなどが行われた場合参照数を+1していきます。逆に参照していたオブジェクトが破棄された場合は参照数が-1されます。
参照数が0になると、参照しているオブジェクトが存在しないということなのでデータの実体は破棄されます。
以上の仕組みにより通常はコピーしたオブジェクトに変更を加えると、コピー元のオブジェクトも変更されることになります。