class TestPtr : protected QSharedPointer<Test>
Test抽象接口类在哪里。该类TestPtr应用作智能指针类。
这是否意味着类TestPtr是从类派生的Test?类测试是否包含在智能指针中?我读到这QSharedPointer是一个模板类。有人可以澄清一下吗?
class TestPtr : protected QSharedPointer<Test>
Test抽象接口类在哪里。该类TestPtr应用作智能指针类。
这是否意味着类TestPtr是从类派生的Test?类测试是否包含在智能指针中?我读到这QSharedPointer是一个模板类。有人可以澄清一下吗?
TestPtr派生自模板类的特定版本,该模板类QSharedPointer已使用该类Test作为其模板参数进行实例化。
不代表什么
TestPtr源于Test——它不是。class Test包含在一个智能指针中(但关闭:这意味着实例 TestPtr实际上将是智能指针,除非作者明确选择,Test否则不会让世界知道它)TestPtr这是什么意思
这意味着TestPtr想要实现智能指针的功能Test(这是什么QSharedPointer<Test>——请注意,我不知道具体是做什么QSharedPointer的,我只是“阅读名称中的内容”)。
为了实现这一点,作者TestPtr计划广泛使用内置于内部作品的功能QSharedPointer(这就是为什么TestPtr继承而不是拥有QSharedPointer成员——以便能够使用 的protected成员QSharedPointer)。
然而,作者计划TestPtr不等同于 a即使该类具有大致相同的功能(我们不知道给定信息的原因)。QSharedPointer<TestPtr>这就是为什么没有继承public。
这是否意味着类 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成员QSharedPointer只能在 a TestPtrbyTestPtr及其后代中访问的方法。假设TestPtr没有覆盖operator *并且有一个构造函数接受 a Test(或对 a 的引用Test)。然后由于访问限制,以下操作将失败:
int main() {
Test bar;
TestPtr pbar(bar);
*pbar; // Error: QSharedPointer<Test>::operator *() is protected within this context.
}
QSharedPointer 是一个模板类,Test 就是它的模板。
TestPtr 继承自 QSharedPointer (不是 Test - 除非 QSharedPointer 继承自 Test - 问题中没有足够的信息来回答这个问题,但它可能)。
从名字上看,QSharedpointer 是一个智能指针,但我对这个类不熟悉,无法回答。
在受保护的继承方面,您可能需要查看以下内容
http://www.parashift.com/c++-faq-lite/private-inheritance.html
不,TestPtr 类不是从 Test 类派生的。类 TestPtr 确实派生自
class QSharedPointer<Test>
这实际上是类 QSharedPointer,用类 Test 表示。
QSharedPointer 类是一个模板类,这意味着一个类被编写一次,然后可以用于Test 或其他类。
例如,类似于 QSharedPointer 类,你可以有一个这样的类:
template <class T>
class Vector
{
};
然后,您可以拥有此向量类的实例,该类存储不同事物的向量。例如Vector<int>,一个存储整数Vector<bool>的类,另一个存储布尔值的类。