Можно ли назвать этот элемент int MyClass::get(int key) const
вместо int& MyClass::get(int key)
? Другими словами, где в исходных кодах C++ можно использовать значение, но не ссылку?Как вызвать эту функцию-член в 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;
}
Почему у вас есть старомодный листинг здесь '(int) abc.get (16)'? –
В C++ 17 вы сможете использовать 'std :: as_const (abc) .get (...)'. В противном случае вы можете привязать 'abc' к' const MyClass & '. Заметьте, что я не поощряю такой дизайн, хотя – KABoissonneault