gpt4 book ai didi

c++ - 如何在C++中调用这个成员函数?

转载 作者:行者123 更新时间:2023-11-30 02:27:28 25 4
gpt4 key购买 nike

是否可以调用此成员 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;
}

最佳答案

最简单的解决方案是对您的变量使用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解释在重载决策期间如何从不使用返回类型。

关于c++ - 如何在C++中调用这个成员函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41751972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com