是否可以调用此成员int MyClass::get(int key) const
而不是int& MyClass::get(int key)
?换句话说,在C ++源代码中,可以使用值而不是引用?
#include <iostream>
using namespace std;
class MyClass {
public:
MyClass(int input) : i(input) {};
int i;
int get(int key) const {
std::cout << "int get(int key) const " << key << std::endl;
return i;
}
int& get(int key) {
std::cout << "int& get(int key) " << key << std::endl;
return i;
}
};
void dummy(const int helpme)
{
std::cout << helpme << std::endl;
}
int main() {
// your code goes here
MyClass abc(6);
std::cout << abc.get(13) << std::endl;
int result = (int)abc.get(16);
dummy(abc.get(18));
return 0;
}
答案 0 :(得分:3)
最简单的解决方案是对变量使用const &
。
const auto & abc_const = abc;
std::cout << abc_const.get(13) << std::endl;
或
std::cout << static_cast<const MyClass&>(abc).get(13) << std::endl;
编辑:看起来你试图根据返回类型选择一个基于以下两行的重载:
int result = (int)abc.get(16);
dummy(abc.get(18));
See this answer解释了在重载解析过程中从不使用返回类型的方法。