Qtの基本

Implicit Sharing

概要

Qtの多くのクラスでは大きなリソースを最小のコピーで済むようにするため、implicit data sharing を利用しています。

仕組み

クラスのメンバ変数はデータに対するポインタのみからなります。
クラスのコピーを行う場合にコピーされるのはポインタだけなので、非常に高速に動作します。
ポインタの参照先のデータには参照数をカウントしており、最初にデータが生成されたとき1、その後コピーなどが行われた場合参照数を+1していきます。逆に参照していたオブジェクトが破棄された場合は参照数が-1されます。
参照数が0になると、参照しているオブジェクトが存在しないということなのでデータの実体は破棄されます。
以上の仕組みにより通常はコピーしたオブジェクトに変更を加えると、コピー元のオブジェクトも変更されることになります。

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2014年08月19日 00:11