Иногда мне нужно выставить некоторые из членов класса. Например, в следующем примере class Mechanic
может потребоваться прямой доступ к компоненту Engine
. Я много раз читал, что все поля должны быть доступны с помощью методов mutator (accessor) по нескольким причинам. Но есть ли какое-либо преимущество при предоставлении неконстантного ссылочного поглотителя:Имеет ли смысл предоставлять неконстантную ссылку getter
class Car
{
public:
Engine & engine()
{
return m_engine;
}
//as a consequence you will also need to provide const version
const Engine & engine() const
{
return m_engine;
}
private:
Engine m_engine;
}
более просто делают компонент двигателя общественности:
class Car
{
public:
Engine engine;
}
Вы также можете заменить public
с protected
, если вам не нравится этот пример. В реальной жизни у вас есть что-то simillar на Java, когда дело доходит до System.in
или System.out
. Похоже, чтобы быть полностью совместимым с тем, что говорят некоторые люди, вам нужно будет выполнить такие вызовы, как System.getInstance().getOut().println("hello world")
. В таких случаях я не вижу никакой пользы, кроме большого количества бюрократического кода.
Без голосования, но если цель вопроса состоит в том, чтобы изложить теорию, а затем не согласиться со всеми ответами, противоречащими этой теории, то она, вероятно, «субъективна и аргументирована». Правильно ли или нет ваша теория. –
@Steve Jessop: Не будьте так ревностны, сортируйте вопросы по голосам, и вы получите много неточных (вопрос не может быть субъективным, ответ может быть). Каждый ответ более или менее субъективен. В оправдание ваших подозрений - я был в поездке, и у меня не было возможности посетить stackoverflow в последнее время. – doc
вот почему я не уверен. Если кто-то искренне просит причины для чего-то, я думаю, что все в порядке, хотя нет никакой определенной причины. Если кто-то не верит, что есть какие-то причины, но все равно спрашивает о причинах, я думаю, что «обычно приводит к конфронтации и аргументации». Никакой серьезный вред не нанесен в любом случае, но последний не является целью сайта AFAIK. –