Если по простому. В константном методе невозможно изменять значения переменных объявленных в том же классе где находится этот константный метод (или объявленных в его родителе). Так?
Может Вы все-таки следить будите за тем, что пишите? Как это метод может класс поменять? Может объект класса?
И вопрос был в утверждении:
Алексей привел пример, что может поменять, так что я считаю, что утверждение не верно, хотел услышать комментарий от Василия.
А может будете читать вдумчивее? - "изменять значения переменных объявленных"
Как можно говорить про утверждение Алексея? Он не просто утверждает, а подтвердил реально, привел пример, можно закинуть в редактор и посмотреть когда компилируется, а когда нет.
Если по простому. В константном методе невозможно изменять значения переменных объявленных в том же классе где находится этот константный метод (или объявленных в его родителе). Так?
Нет. Вы же в курсе, что у каждого объекта класса свой набор переменных, объявленных в этом классе? И константный метод не может поменять только тот объект (то-есть набор), из которого он был вызван.
Alexey Kozitsyn: Нет. Вы же в курсе, что у каждого объекта класса свой набор переменных, объявленных в этом классе? И константный метод не может поменять только тот объект (то-есть набор), из которого он был вызван.
Причем тут вызов? Значение имеет расположение метода и переменных. Если метод и переменные расположены в одном классе, то невозможно поменять. Если класс передан по ссылке как параметр, то можно.
Dmitry Fedoseev: Причем тут вызов? Значение имеет расположение метода и переменных. Если метод и переменные расположены в одном классе, то невозможно поменять. Если класс передан по ссылке как параметр, то можно.
Вызов тут при том, что если объект1 класса А вызывает константный метод класса А, то этот метод не может менять этот объект1 (т.е. тот объект1, который его вызвал). Если же объект1 передать по ссылке в этот же самый константный метод, но вызванный из объекта2 класса А, то объект1 можно будет изменить. Объект2, в свою очередь, нет.
Не своего, а совершенно постороннего, только тип такой же.
Что не своего? Что тип такой же?
Вы хотите сказать, что константный метод не сможет поменять чужого класса?
И когда отвечаете, пишите, пожалуйста, более развернуто, не понял, что Вы хотите сказать.
Что не своего? Что тип такой же?
Вы хотите сказать, что константный метод не сможет поменять чужого класса?
И когда отвечаете, пишите, пожалуйста, более развернуто, не понял, что Вы хотите сказать.
Если по простому. В константном методе невозможно изменять значения переменных объявленных в том же классе где находится этот константный метод (или объявленных в его родителе). Так?
Это вы непонятно что пишите Сможет поменять чужой класс любого типа и такого же как сам.
Может Вы все-таки следить будите за тем, что пишите? Как это метод может класс поменять? Может объект класса?
И вопрос был в утверждении:
Константный метод не может менять члены своего класса
Алексей привел пример, что может поменять, так что я считаю, что утверждение не верно, хотел услышать комментарий от Василия.
Может Вы все-таки следить будите за тем, что пишите? Как это метод может класс поменять? Может объект класса?
И вопрос был в утверждении:
Алексей привел пример, что может поменять, так что я считаю, что утверждение не верно, хотел услышать комментарий от Василия.
А может будете читать вдумчивее? - "изменять значения переменных объявленных"
Как можно говорить про утверждение Алексея? Он не просто утверждает, а подтвердил реально, привел пример, можно закинуть в редактор и посмотреть когда компилируется, а когда нет.
Если по простому. В константном методе невозможно изменять значения переменных объявленных в том же классе где находится этот константный метод (или объявленных в его родителе). Так?
Может Вы все-таки следить будите за тем, что пишите? Как это метод может класс поменять? Может объект класса?
..
Вот так:
Нет. Вы же в курсе, что у каждого объекта класса свой набор переменных, объявленных в этом классе? И константный метод не может поменять только тот объект (то-есть набор), из которого он был вызван.
Причем тут вызов? Значение имеет расположение метода и переменных. Если метод и переменные расположены в одном классе, то невозможно поменять. Если класс передан по ссылке как параметр, то можно.