Czy dobrze jest używać pola odniesienia const jako programu pobierającego tylko do odczytu w klasach C++?Pole odniesienia const jako własność readonly w klasie C++
Mam na myśli, czy ten kod spełnia dobre praktyki?
class check{
private:
int _x;
public:
const int& x = _x;
void setX(int v){
_x = v;
}
};
To działa bardzo podobnie jak właściwości C#, IMHO, i bardzo łatwy i czysty w klasie kodu Zastosowanie:
check s;
int i;
std::cin >> i;
s.setX(i);
std::cout << s.x << '\n';
s.setX(7);
// s.x = i; // Error
std::cout<<s.x<<'\n';
I może być const rzucony na zapomnienie :) – StoryTeller
Nie, jest to zła praktyka, ponieważ przechowywanie tego odniesienia może spowodować dodatkowy nadmiar pamięci w porównaniu do prostej funkcji pobierającej inline. Inną sprawą jest to, że nie będzie możliwe wykonywanie sprawdzeń/zapewnień środowiska wykonawczego bez względu na uzyskiwaną wartość. Niestety, nie ma rzeczywistego sposobu naśladowania właściwości C# - podobnie jak w składni. Było [specyficzne dla MS 'rozszerzenie własności '] (https://docs.microsoft.com/en-us/cpp/cpp/property-cpp), ale są one niestandardowe i zostały porzucone. – VTT
Spróbuj przypisać jedno 'sprawdzanie' do innego. – molbdnilo