Указатель ведь можно вернуть, не изменяя объекта, то есть можно parentZone() const;. Другое дело, что по указателю можно добраться до внутренних данных объекта и поменять их, тем самым как бы поменяв объект, но компилятору плевать. Кстати, а нельзя здесь возвращать ссылки?