c ++标准两种不同的声明

时间:2017-03-02 13:28:49

标签: c++ function standards

为什么在c ++标准中(我看cpp参考站点)允许两个具有相同签名的变体?

例如:

reference front();
const_reference front() const; 

3 个答案:

答案 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; 
                     // ^^^^^