与元编程相比,两者之间存在差异 声明?
template<typename T>
struct matrix {
typedef matrix self_type; // or
typedef matrix<T> self_type;
};
谢谢
答案 0 :(得分:6)
在这种特殊情况下(在类模板中),matrix
是matrix<T>
的简写。当你整天写出很多毛茸茸的模板,同时试图将所有东西都装在80列中时,欢迎使用速记。
请注意,您还可以缩写方法参数:
template <typename T>
struct matrix
{
typedef matrix my_type;
matrix(); // constructor is abbreviated too
matrix& operator=(matrix);
};
// Method argument types can be abbreviated too
// but not result types.
template <typename T>
matrix<T>& matrix<T>::operator=(matrix m)
{
// ...
}
答案 1 :(得分:0)
他们都指的是同一种类型。 我能看到的唯一区别是从性能角度来看: 我想(取决于编译器实现),矩阵本身就是关于类本身的引用,因此它不需要环境中的任何东西。矩阵正在讨论由T(即矩阵)模板化的模板化类矩阵,因此它可能需要编译器的更多推导机制。 但我只是在猜测,我从来没有读过任何关于此的内容。