拥有一个空类可能有什么好处/用处?
附言:这个问题对你们中的一些人来说可能是微不足道的,但它只是为了学习目的,没有实际意义。仅供参考,谷歌搜索也没什么帮助。
发布于 2010-10-28 01:12:03
例如,下面的代码可以用来拥有一个可以包含(SQL) null值的boost::variant
。
class Null { };
typedef boost::variant<Null, std::string, int> Value;
为了让它更有用,像operator==
和operator<<
这样的东西是很方便的。例如:
std::ostream& operator<<(std::ostream &lhs, const Null &rhs)
{
lhs << "*NULL*";
return lhs;
}
int main()
{
Variant v("hello");
std::cout << v << std::endl;
v = Null();
std::cout << v << std::endl;
...
}
将给予:
hello
*NULL*
发布于 2010-10-28 00:22:07
在C++的标准模板库中,例如你有
template<class _Arg,
class _Result>
struct unary_function
{ // base class for unary functions
typedef _Arg argument_type;
typedef _Result result_type;
};
在定义函数器时,您可以继承unary_function,然后您可以根据自己的需要自动定义类型定义。
发布于 2010-10-28 00:06:57
一个空类可以被用作一个“令牌”来定义一些独特的东西;在某些模式中,您需要一个唯一的实例的实现无关的表示,除了它的唯一性之外,它对开发人员没有任何价值。一个例子是Unit of Work;您可能一点也不关心您的执行器内部发生了什么,但是您希望告诉该执行器您告诉它要执行的任务是原子集的一部分。在这种情况下,向外界表示工作单元的空类可能是完美的;几乎任何工作单元对象可以存储或执行的操作(封装DB事务、公开提交/回滚行为)都会将您绑定到特定的实现,但是对象引用对于提供对原子任务集的唯一但可复制和可传递的引用非常有用。
https://stackoverflow.com/questions/4035180
复制相似问题