我正在学习数据结构(List,Stack,Queue),而这部分代码让我感到困惑。函数参数C++中的赋值运算符
ListNode(const Object& theElement = Object(), ListNode * node = NULL);
template<class Object>
ListNode<Object>::ListNode(const Object& theElement, ListNode<Object> * node) {
element = theElement;
next = node;
}
- 为什么有内函数参数的赋值操作符?
Object()
呼叫做什么?
我很想赞成票,如果你要提及的默认参数的更“邪恶”的C++功能之一。他们将无辜的构造函数转换为构造函数或默认的构造函数。他们很难“绑定”功能。当仅应该指定一些参数而其他参数被默认设置时,这是一种障碍。 – pmr 2012-04-11 10:56:27
我也没有。一种尺寸不适合所有。有时候它们非常有用。 – Spook 2012-04-11 11:00:15
@pmr,我不一定同意你说他们是“邪恶的”。它们是一种避免通过编写多个构造函数来重复自己的有用方法,只需提供一个构造函数的默认参数即可。标准库实现通常利用这一点,例如, 'vector(const allocator_type&a = allocator_type());' – 2012-04-11 11:08:17