我使用此 C++ 代码将 x 存储到变量 val。
class Hello
{
int val;
public:
Hello(int x) : val(x) {}
};
但是,当我看到这段代码时,我看不出 Super 是如何存储值 t 或 o 的。
template<typename T>
class K : public std::auto_ptr<T>
{
typedef std::auto_ptr<T> Super;
public:
K() : Super() { }
K(T* t) : Super(t) { }
K(K<T>& o) : Super(o) { }
};
这段代码是如何工作的?
最佳答案
可以写成
template<typename T>
class K : public std::auto_ptr<T>
{
public:
K() : std::auto_ptr<T>() { }
K(T* t) : std::auto_ptr<T>(t) { }
K(K<T>& o) : std::auto_ptr<T>(o) { }
};
初始化基类只是比较冗长。如果您必须处理模板化的基类,大多数情况下 typedef 会更简洁。
关于类中的 C++ typedef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5186935/