C++ 同一类/结构中具有相同签名的相同函数?超载?
我在boost示例中看到了用于构造状态机的代码部分。让我困惑的是两个成员函数ElapsedTime()?这是否允许两个函数具有相同的签名,如函数名和参数类型 我在谷歌上搜索了很多,但没有找到相关信息。如果您对此有任何建议,我们将不胜感激C++ 同一类/结构中具有相同签名的相同函数?超载?,c++,function,class,boost,member,C++,Function,Class,Boost,Member,我在boost示例中看到了用于构造状态机的代码部分。让我困惑的是两个成员函数ElapsedTime()?这是否允许两个函数具有相同的签名,如函数名和参数类型 我在谷歌上搜索了很多,但没有找到相关信息。如果您对此有任何建议,我们将不胜感激 struct Active : sc::simple_state< Active, StopWatch, Stopped > { public: typedef sc::transition< EvReset, Active >
struct Active : sc::simple_state< Active, StopWatch, Stopped >
{
public:
typedef sc::transition< EvReset, Active > reactions;
Active() : elapsedTime_( 0.0 ) {}
double ElapsedTime() const { return elapsedTime_; }
double & ElapsedTime() { return elapsedTime_; }
private:
double elapsedTime_;
};
struct-Active:sc::simple_-state
{
公众:
typedef sc::转换反应;
Active():elapsedTime_uu0.0{}
double ElapsedTime()常量{return ElapsedTime}
double&ElapsedTime(){返回ElapsedTime;}
私人:
双延时;
};
它们没有相同的签名-一个是常量,另一个不是。Constness是成员函数签名的一部分。签名不同,因为签名具有const
限定符。
函数的签名由名称和参数类型定义。
您有两个同名函数,但它们的参数不同
你可能想知道这怎么可能
因此,每个成员函数隐式获取另一个参数:这是“this”指针。指向调用该方法的对象的指针
在方法末尾添加const时,将“this”参数指定为指向const的const指针。在另一种方法中(不带常量),“this”的类型只是常量指针
因此,您有两个具有不同签名的方法,根本没有问题。它们的参数类型不同,因为其中一个是const
(这意味着隐式传递的此指针是const
)。第二个不是。它们没有相同的签名,一个是const,另一个不是t@BenjaminBannier次要更正:隐式传递的此
指针指向常量
。当然,这就是你的意思。@sehe当然是对的;相关段落是C++11中的§9.3.2/1。谢谢大家,它帮助很大:)谢谢