C++ 函数通过返回常量重载,而不是?

C++ 函数通过返回常量重载,而不是?,c++,overloading,C++,Overloading,我正在阅读HELib的源代码,遇到了以下课程: #定义克隆的(CLONED)PTR(声明)(克隆的(PTR)类型,克隆的(PTR)INIT)\ \ 模板类已克隆\u PTR\u类型\ { \ ...... 常量X*get_ptr()常量{return ptr;}\ X*get_ptr(){return ptr;}\ ...... }; \ \ 但根据我的理解,C++没有返回值的函数重载。那么这两个函数的作用是什么呢?它不是返回类型,而是const关键字。如果对类的const实例调用该方法,将调

我正在阅读HELib的源代码,遇到了以下课程:

#定义克隆的(CLONED)PTR(声明)(克隆的(PTR)类型,克隆的(PTR)INIT)\
\
模板类已克隆\u PTR\u类型\
{ \
......
常量X*get_ptr()常量{return ptr;}\
X*get_ptr(){return ptr;}\
......
}; \
\

但根据我的理解,C++没有返回值的函数重载。那么这两个函数的作用是什么呢?

它不是返回类型,而是const关键字。如果对类的const实例调用该方法,将调用const方法。

它不是返回类型,而是const关键字。如果在类的const实例上调用该方法,将调用const方法。

区别不仅仅在于返回类型。再看看。(我知道这个问题看起来不像是重复的,但它的答案回答了你的问题。)区别不仅仅在于返回类型。再看看。(我知道这个问题看起来不像是重复的,但它的答案回答了你的问题。)
#define CLONED_PTR_DECLARE(CLONED_PTR_TYPE,CLONED_PTR_INIT) \
 \
template <class X, class Cloner = CLONED_PTR_INIT<X> > class CLONED_PTR_TYPE \
{ \
......
    const X* get_ptr() const { return ptr; } \
    X* get_ptr() { return ptr; } \
......
}; \
\