为什么在c ++标准中(我看cpp参考站点)允许两个具有相同签名的变体?
例如:
reference front();
const_reference front() const;
答案 0 :(得分:6)
尾随const
是签名的一部分。假装implicit this
是明确的:
reference front( This *this);
const_reference front(const This *this);
显然,参数列表是不同的。
答案 1 :(得分:4)
具有相同签名的两个变体
这是一种常见的误解。签名末尾的curl
是签名的一部分。
例如,对于返回对包含数据的引用的容器类,它可能很有用。 const
版本返回const
引用,因此无法通过该引用修改基准。
答案 2 :(得分:2)
因为第二个函数中的const
计为签名的一部分。
const_reference front() const;
// ^^^^^