これは、クラス TestPtr がクラス Test から派生したことを意味しますか?
号TestPtr
は に由来しQSharedPointer
ます。
クラス テストはスマート ポインターで囲まれていますか?
はい。むしろ、QSharedPointer<Test>
ポインターを管理するスマート ポインター クラスですTest
。
QSharedpointer はテンプレート クラスであると読みました。誰か明確にしてくれませんか?
テンプレートは、関数が操作から値を抽象化するのと同様に、型を抽象化します。例えば、
int i,j;
...
i = 2*i+1;
j = 2*j+1;
次のように抽象化できます。
void foo(int &x) {
x = 2*x + i;
}
...
int i,j,
...
foo(i);
foo(j);
同様に、次のような個別のクラスを持つのではなく、
class IntSharedPtr { typedef int value_type; ... };
class FloatSharedPtr { typedef float value_type; ...};
テンプレートクラスを持つことができます:
template <typename _T>
class SharedPtr { typedef _T value_type; ...};
typedef SharedPtr<int> IntSharedPtr;
typedef SharedPtr<float> FloatSharedPtr;
最後に、のprotected
メンバーはbyとその子孫QSharedPointer
でのみアクセス可能であることを意味します。オーバーライドせず、 (または への参照)を取るコンストラクターがあるとします。次に、アクセス制限により、次のことが失敗します。TestPtr
TestPtr
TestPtr
operator *
Test
Test
int main() {
Test bar;
TestPtr pbar(bar);
*pbar; // Error: QSharedPointer<Test>::operator *() is protected within this context.
}