我今天看到以下代码。
我知道返回引用和返回const引用之间的区别。
但是我不知道何时会调用 T&运算符() *,何时调用const T&运算符() const *将被调用。
它们具有相同的名称。
VlcLibDirectoryNeeded
答案 0 :(得分:0)
但是我不知道何时会调用T&operator()*,何时调用const T&operator()const *。
它们具有相同的名称。
在这种情况下,如果在const
对象上调用成员函数,则将调用const
方法,并且将为非const对象调用non-const方法。 / p>
调用者如何知道应调用哪个同名成员函数?
他们不知道,他们也不应该。重载集的全部意义在于,调用者不知道调用了哪个确切的重载。这旨在成为实现细节。从重载集中调用函数时,调用者应使用相同的语法。
由重载集的作者根据调用函数的参数来完成正确的事情。
如果您确实希望调用者知道调用了哪个函数,那么不要完全使用重载集,只需提供具有不同名称的函数即可。